TCP,UDP基本编程
来源:互联网 发布:怎么在淘宝上买到发票 编辑:程序博客网 时间:2024/05/14 04:03
TCP服务器端
/* * ===================================================================================== * * Filename: server.c * * Description: * * Version: 1.0 * Created: 2012年02月20日 13时11分25秒 * Revision: none * Compiler: gcc * * Author: MaZheng (blog.csdn.net/mazheng1989), mazheng19891019@gmail.com * Company: Dalian University Of Technology * * ===================================================================================== */#include<stdio.h>#include<strings.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#definePORT 1234/* */#defineBACKLOG 1/* */int main(){int listenfd,connectfd;//socket descriptorsstruct sockaddr_in server;//server's address informationstruct sockaddr_in client;//client's address informationsocklen_t addrlen;/*crate TCP socket*/if((listenfd=socket(AF_INET,SOCK_STREAM,0))==-1){//handle exceptionperror("socket() error.");exit(1);}/*set socket option*/int opt=SO_REUSEADDR;setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));bzero(&server,sizeof(server));server.sin_family=AF_INET;server.sin_port=htons(PORT);server.sin_addr.s_addr=htonl(INADDR_ANY);if(bind(listenfd,(struct sockaddr *)&server,sizeof(server))==-1){/*handle exception*/perror("Bind() error.");exit(1);}if(listen(listenfd,BACKLOG)==-1){perror("listen() error.\n");exit(1);}addrlen=sizeof(client);if((connectfd=accept(listenfd,(struct sockaddr *)&client,&addrlen))==-1){perror("accept() error.\n");exit(1);}//printf client's IP and portprintf("You got a connection from client's ip is %s,port is %d\n",inet_ntoa(client.sin_addr),htons(client.sin_port));send(connectfd,"Welcome!\n",9,0);close(connectfd);//close connectfdclose(listenfd);//close listenfdreturn 0;}运行命令:$:gcc tcpserver.c -o tcpserver.out
$:/tcpserver.out
TCP客户端
/* * ===================================================================================== * * Filename: client.c * * Description: * * Version: 1.0 * Created: 2012年02月20日 13时30分02秒 * Revision: none * Compiler: gcc * * Author: MaZheng (blog.csdn.net/mazheng1989), mazheng19891019@gmail.com * Company: Dalian University Of Technology * * ===================================================================================== */#include<stdio.h>#include<sys/socket.h>#include<sys/types.h>#include<strings.h>#include<unistd.h>#include<netinet/in.h>#include<netdb.h>#definePORT 1234/* */#defineMAXDATASIZE 100/* */int main(int argc,char **argv){int sockfd,num;//files descriptorschar buf[MAXDATASIZE];//buf will store received textstruct hostent *he ;//structure that will get information about remote hoststruct sockaddr_in server;if(argc !=2){printf("Usage: %s <IP Address>\n",argv[0]);exit(1);}if((he=gethostbyname(argv[1]))==NULL){printf("gethostbyname() error.\n");exit(1);}if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){printf("socket() error.\n");exit(1);}bzero(&server,sizeof(server));server.sin_family=AF_INET;server.sin_port=htons(PORT);server.sin_addr=*((struct in_addr *)he->h_addr);if(connect(sockfd,(struct sockaddr *)&server,sizeof(server))==-1){printf("connect() error.\n");exit(1);}if((num=recv(sockfd,buf,MAXDATASIZE,0))==-1){printf("recv() error.\n");exit(1);}buf[num-1]='\0';printf("server message: %s\n",buf);close(sockfd);return 0;}运行命令:$:gcc tcpclient.c -o tcpclient.out
$:./tcpclient.out 127.0.0.1
UDP 服务器端
/* * ===================================================================================== * * Filename: udpserver.c * * Description: * * Version: 1.0 * Created: 2012年02月20日 16时44分36秒 * Revision: none * Compiler: gcc * * Author: MaZheng (blog.csdn.net/mazheng1989), mazheng19891019@gmail.com * Company: Dalian University Of Technology * * ===================================================================================== */#include<stdio.h>#include<string.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include<stdlib.h>#include<netinet/in.h>#include<arpa/inet.h>#definePORT 1234/* */#defineMAXDATASIZE 100/* */int main(){int sockfd;struct sockaddr_in server;//server's address informationstruct sockaddr_in client;//client's address informationsocklen_t len;int num;char buf[MAXDATASIZE];//buffer for message/*creating udp socket */if((sockfd=socket(AF_INET,SOCK_DGRAM,0))==-1){perror("creating socket failed.");exit(1);}int opt=SO_REUSEADDR;setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));bzero(&server,sizeof(server));server.sin_family=AF_INET;server.sin_port=htons(PORT);server.sin_addr.s_addr=htonl(INADDR_ANY);if(bind(sockfd,(struct sockaddr *)&server,sizeof(server))==-1){perror("Bind() error.");exit(1);}len=sizeof(client);while(1){num=recvfrom(sockfd,buf,MAXDATASIZE,0,(struct sockaddr *)&client,&len);if(num<0){perror("recvfrom() error.\n");exit(1);}buf[num]='\0';printf("You got a message <%s> from client.\nIt's ip is %s ,port is %d.\n",buf,inet_ntoa(client.sin_addr),htons(client.sin_port)); char data[8]="Welcome";num=sendto(sockfd,data,MAXDATASIZE,0,(struct sockaddr *)&client,sizeof(client));printf("num==%d\n",num); if(1||!strcmp(buf,"bye")) { break; } } close(sockfd);return 0;}运行命令:$:gcc udpserver.c -o udpserver.out
$:./udpserver.out
UDP客户端
/* * ===================================================================================== * * Filename: udpclient.c * * Description: * * Version: 1.0 * Created: 2012年02月20日 16时57分37秒 * Revision: none * Compiler: gcc * * Author: MaZheng (blog.csdn.net/mazheng1989), mazheng19891019@gmail.com * Company: Dalian University Of Technology * * ===================================================================================== */#include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<unistd.h>#include<netinet/in.h>#include<string.h>#include<netdb.h>#definePORT 1234/* */#defineMAXDATASIZE 100/* */int main(int argc,char **argv){int sockfd,num;char buf[MAXDATASIZE];struct hostent *he;struct sockaddr_in server,peer;if(argc!=3){printf("Usage: %s <IP Address> <message>\n",argv[0]);exit(1);}if((he=gethostbyname(argv[1]))==NULL){printf("gethostbyname()error.\n");exit(1);}if((sockfd=socket(AF_INET,SOCK_DGRAM,0))==-1){printf("socket() error.\n");exit(1);}bzero(&server,sizeof(server));server.sin_family=AF_INET;server.sin_port=htons(PORT);server.sin_addr=*((struct in_addr *)he->h_addr);sendto(sockfd,argv[2],strlen(argv[2]),0,(struct sockaddr *)&server,sizeof(server));socklen_t len=sizeof(server);while(1){num=recvfrom(sockfd,buf,MAXDATASIZE,0,(struct sockaddr *)&peer,&len);if(num<0){printf("recvfrom() error.\n");exit(1);}if(len!=sizeof(server)||memcmp((const void *)&server,(const void *)&peer,len)!=0){printf("Receive message from other server.\n");continue;}buf[num]='\0';printf("Server Message:%s.\n",buf);break;}close(sockfd);return 0;}运行命令:$:gcc udpclient.c -o udpclient.out
$:./udpclient.out 127.0.0.1 helo
- TCP,UDP基本编程
- TCP和UDP套接字编程基本流程
- TCP/UDP编程
- TCP/UDP编程
- .Net TCP/UDP 编程
- TCP、UDP编程介绍
- Linux TCP/UDP编程
- TCP网络编程&&UDP
- 网络编程 UDP TCP
- 网络编程(TCP/UDP)
- TCP、UDP、SOCKET编程
- UDP-TCP编程
- 网络编程-UDP-TCP
- TCP&UDP编程
- TCP/UDP编程
- java TCP/UDP编程
- Socket编程UDP/TCP
- TCP/UDP编程
- Android - 线程同步
- ORA-12549 Unable To Connect To ASM Instance问题
- Android开发baidu地图的blog url
- SSH,tomcat启动不了,.hbm.xml 中
- hp-ux 11.31因为内存耗尽导致ORA-12549错误
- TCP,UDP基本编程
- TNS-12518 TNS-12549 TNS-12560 TNS-00519
- ORA-01031: insufficient privileges
- 【WCF】自动加载WCF Library (IIS Host)
- JDK源码阅读 java.util.concurrent—并发容器类
- 黑红联盟
- HDU 1231 自己做的,改天优化一下 类似题1003
- CString、TCHAR*、char*转换
- 驱动加载工具(VC7源码)