简单UDP通信

来源:互联网 发布:精梳羊绒知乎 编辑:程序博客网 时间:2024/06/02 02:39
//udpserver.cc#include <iostream>#include <strings.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>using namespace std;int main(int argc, char *argv[]){    //创建套接字    int sk = socket(AF_INET, SOCK_DGRAM, 0);    struct sockaddr_in server;    bzero(&server, sizeof(server));    server.sin_family = AF_INET;    server.sin_port = htons(atoi(argv[1]));    server.sin_addr.s_addr = htonl(INADDR_ANY);    //绑定端口    bind(sk, (struct sockaddr*)&server, sizeof(server));    int len = 0;    struct sockaddr_in client;    bzero(&client, sizeof(client));    size_t size = sizeof(client);    char buff[1024] = {'\0'};    //接收数据    while((len = recvfrom(sk, buff, sizeof(buff), 0, (struct sockaddr*)&client, &size)) > 0)    {cout << buff << endl;    }    //关闭套接字    close(sk);    return 0;}



//udpclient.cc#include <iostream>#include <cstring>#include <strings.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>using namespace std;int main(int argc, char *argv[]){    //创建套接字    int sk = socket(AF_INET, SOCK_DGRAM, 0);    struct sockaddr_in server;    server.sin_family = AF_INET;    server.sin_port = htons(atoi(argv[2]));    server.sin_addr.s_addr = inet_addr(argv[1]);    char buff[1024] = {'\0'};    while(1)    {cin.getline(buff, sizeof(buff));sendto(sk, buff, sizeof(buff), 0, (struct sockaddr*)&server, sizeof(server));if(strcmp(buff, "quit") == 0){    break;}    }    close(sk);    return 0;}

程序运行截图:

服务端:


客户端:


原创粉丝点击