linux Udp 套接字

来源:互联网 发布:windows python脚本 编辑:程序博客网 时间:2024/06/06 05:02

1、服务器代码

#include<stdio.h>#include<netinet/in.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>#include<string.h>#include<stdlib.h>int startup(const char *_ip,int _port){int sock = socket(AF_INET,SOCK_DGRAM,0);if(sock < 0){perror("socket");exit(1);}struct sockaddr_in local;local.sin_family = AF_INET;local.sin_port = htons(_port);local.sin_addr.s_addr = inet_addr(_ip);if(bind(sock,(struct sockaddr*)&local,sizeof(local)) < 0){perror("bind");exit(2);}return sock;}static void usage(const char* proc){printf("[local ip] [local port]\n",proc);}int main(int argc,char* argv[]){if(argc != 3){usage(argv[0]);return 0;}int sock = startup(argv[1],atoi(argv[2]));//create socketstruct sockaddr_in client;socklen_t len = sizeof(client);char buf[1024];while(1){ssize_t s = recvfrom(sock,buf,sizeof(buf)-1,0,(struct sockaddr*)&client,&len);if(s > 0){buf[s] = 0;printf("client:%s-%d say# %s\n",inet_ntoa(client.sin_addr),ntohs(client.sin_port),buf);sendto(sock,buf,strlen(buf),0,(struct sockaddr*)&client,len);}}close(sock);return 0;}

2、客户端代码

#include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>#include<netinet/in.h>#include<stdlib.h>#include<string.h>static void usage(const char* proc){printf("[server ip] [server port] %s\n",proc);}int main(int argc,char *argv[]){if(argc != 3){usage(argv[0]);return 0;}int sock = socket(AF_INET,SOCK_DGRAM,0);if(sock < 0){perror("socket");exit(1);}struct sockaddr_in peer;peer.sin_family = AF_INET;peer.sin_port = htons(atoi(argv[2]));peer.sin_addr.s_addr = inet_addr(argv[1]);socklen_t len = sizeof(peer);//if(connect(sock,(struct sockaddr*)&peer,len) < 0){//perror("connect");//exit(1);//}char buf[1024];while(1){printf("Please send#");fflush(stdout);ssize_t s = read(0,buf,sizeof(buf)-1);if(s > 0){buf[s-1] = 0;sendto(sock,buf,strlen(buf),0,(struct sockaddr*)&peer,len);ssize_t _s = recvfrom(sock,buf,sizeof(buf)-1,0,NULL,NULL);printf("server say# %s\n",buf);}else if( s == 0){printf("client is quit!");}}close(sock);return 0;}

3、运行结果





原创粉丝点击