【C语言】【unix c】编写代码实现基于UDP的网络通信

来源:互联网 发布:三体电影知乎 编辑:程序博客网 时间:2024/06/06 11:02
编写代码实现基于UDP的网络通信:(userv.c uclie.c)        userv.c:            #include <stdio.h>            #include <p_net.h>            #include <ctype.h>            int main(void) {                SA4 serv, cli;                int rcv;                char buf[128];                int cli_len = sizeof(cli);                //创建socket                int s_fd = socket(AF_INET, SOCK_DGRAM, 0);                if(s_fd == -1) {                perror("socket");                return -1;                }                //初始化服务器信息                serv.sin_family = AF_INET;                serv.sin_port = htons(7777);                serv.sin_addr.s_addr = htonl(INADDR_ANY);                int b = bind(s_fd, (SA*)&serv, sizeof(SA4));                if(b == -1) {                perror("bind");                return -1;                }                while(1) {                rcv = recvfrom(s_fd, buf, 128, 0, (SA*)&cli, &cli_len);                if(rcv > 0) {                    int i;                    for(i = 0; i < rcv; i++) {                    buf[i] = toupper(buf[i]);                    }                    sendto(s_fd, buf, rcv, 0, (SA*)&cli, sizeof(SA4));                }                }                return 0;            }        uclie.c:            #include <stdio.h>            #include <p_net.h>            #include <string.h>            int main(int argc, char *argv[]) {                SA4 serv;                char *msg = "wang \n";                char *buf[128];                //创建socket                int s_fd = socket(AF_INET, SOCK_DGRAM, 0);                if(s_fd == -1) {                perror("socket");                return -1;                }                //初始化服务器的地址                serv.sin_family = AF_INET;                serv.sin_port = htons(7777);                inet_pton(AF_INET, argv[1], &serv.sin_addr);                //向服务器发消息                int s = sendto(s_fd, msg, strlen(msg), 0, (SA*)&serv,sizeof(SA4));                if(s == -1) {                perror("sendto");                return -1;                }                //等待从服务器段返回消息                int rcv = recvfrom(s_fd, buf, 128, 0, NULL, NULL);                write(1, buf, rcv);                close(s_fd);                return 0;            }
阅读全文
0 0