From 1ecde61a160727deb44f8b26609bdbc70263e7ea Mon Sep 17 00:00:00 2001 From: ningling <2907616355@qq.com> Date: Wed, 10 May 2023 03:15:54 +0000 Subject: [PATCH] update 6/client.c. Signed-off-by: ningling <2907616355@qq.com> --- 6/client.c | 121 ++++++++++++++++++++++++++--------------------------- 1 file changed, 60 insertions(+), 61 deletions(-) diff --git a/6/client.c b/6/client.c index f42bc07..cab54c6 100644 --- a/6/client.c +++ b/6/client.c @@ -1,65 +1,64 @@ -#include -#include -#include -#include #include -#include +#include #include -#include #include - -#define MYPORT 8887 -char* SERVERIP = "127.0.0.1"; - -#define ERR_EXIT(m) - do -{ - perror(m); - exit(EXIT_FAILURE); - } while(0) - -void echo_cli(int sock) -{ - struct sockaddr_in servaddr; - memset(&servaddr, 0, sizeof(servaddr)); - servaddr.sin_family = AF_INET; - servaddr.sin_port = htons(MYPORT); - servaddr.sin_addr.s_addr = inet_addr(SERVERIP); - - int ret; - char sendbuf[1024] = {0}; - char recvbuf[1024] = {0}; - while (fgets(sendbuf, sizeof(sendbuf), stdin) != NULL) - { - - printf("向服务器发送:%s\n",sendbuf); - sendto(sock, sendbuf, strlen(sendbuf), 0, (struct sockaddr *)&servaddr, sizeof(servaddr)); - - ret = recvfrom(sock, recvbuf, sizeof(recvbuf), 0, NULL, NULL); - if (ret == -1) - { - if (errno == EINTR) - continue; - ERR_EXIT("recvfrom"); - } - printf("从服务器接收:%s\n",recvbuf); - - memset(sendbuf, 0, sizeof(sendbuf)); - memset(recvbuf, 0, sizeof(recvbuf)); - } - - close(sock); - - -} - -int main(void) -{ - int sock; - if ((sock = socket(PF_INET, SOCK_DGRAM, 0)) < 0) - ERR_EXIT("socket"); - - echo_cli(sock); - - return 0; +#include +#include +#include +#include + +int main() { + // 创建套接字 + int sock = socket(AF_INET, SOCK_DGRAM, 0);//TCP/IP – IPv4,UDP流 + if (sock == -1) { + perror("socket create error"); + return -1; + } + + // 设置服务器地址 + struct sockaddr_in server_address; + memset(&server_address, 0, sizeof(server_address)); + server_address.sin_family = AF_INET; + server_address.sin_addr.s_addr = inet_addr("127.0.0.1");//IP地址转换,绑定IP“127.0.0.1” + server_address.sin_port = htons(9999);//字节序转换 + + // // 连接服务器 + // if (connect(sock, (struct sockaddr *)&server_address, + // sizeof(server_address)) == -1) { + // perror("connect error"); + // return -1; + // } + + // 读取文件 + char buffer[1024]; + int fileFd = open("file.txt", O_RDONLY); + if (read(fileFd, buffer, 1024) == -1) { + perror("read error!"); + return -1; + } + close(fileFd); + + // 发送数据 + int ret = sendto(sock, buffer, 1024, 0, (struct sockaddr *)&server_address, + sizeof(server_address)); + if (ret == -1) { + perror("Failed to send data."); + return -1; + } + + // 接收数据 + memset(buffer, 0, 1024); + int length = recvfrom(sock, buffer, 1024, 0, NULL, NULL); + if (length == -1) { + perror("Failed to receive data."); + return -1; + } + + // 输出数据 + printf("Received file content: %s\n", buffer); + + // 关闭套接字 + close(sock); + + return 0; } \ No newline at end of file -- Gitee