Linux 网络编程实现TCP协议下的服务器客户端通信

来源:互联网 发布:数组词 编辑:程序博客网 时间:2024/06/04 18:09

基于TCP协议的客户端代码

/* ************************************************ *Name : Linux Client                     <span style="white-space:pre"></span>* *Date : 2014-11-10                       <span style="white-space:pre"></span>* *Author : marksman<span style="white-space:pre"></span>                        * *Aim : Linux Client can send and receive <span style="white-space:pre"></span>* *<span style="white-space:pre"></span>message.<span style="white-space:pre"></span>* ************************************************ */#include <stdio.h>#include <sys/socket.h>#include <netinet/in.h>#include <stdlib.h>#include <memory.h>#include <string.h>int main(int argc,char *argv[]){int socketfd,receive_socket;struct sockaddr_in s_add,c_add;unsigned short portnum = 0x22B8;int len;char buf[100];/* *Create the socket */if((socketfd=socket(AF_INET,SOCK_STREAM,0))<0){printf("Socket create error! \n");exit(1);}/* *set the address format */bzero(&s_add,sizeof(struct sockaddr_in));s_add.sin_family = AF_INET;s_add.sin_addr.s_addr = inet_addr("127.0.0.1");//change the string to 32-bit internet byte.s_add.sin_port=htons(portnum);if (connect(socketfd,(struct sockaddr *)(&s_add),sizeof(struct sockaddr))<0){printf("Connect failure!\n");return -1;}elseprintf("Connect Success!\n");/* *Using the loop to send and receive the message. */while(1){memset(buf,'\0',100);printf("Input message to send: ");fgets(buf,100,stdin);len=send(socketfd,buf,strlen(buf)-1,0);if(len<0){printf("send error!\n");exit(1);}else {printf("Send Success! send is : %s \n",buf);}memset(buf,'\0',100);len=recv(socketfd,buf,100,0);if(len<0){printf("recv error!\n");exit(1);}else if(0 == len){printf("client quit!\n");exit(1);}else{printf("receive message is : %s\n",buf);}printf("--------------------------\n");}close(socketfd);}

基于TCP协议的服务器代码

/* ************************************************ *Name : Linux Server                     <span style="white-space:pre"></span>* *Date : 2014-11-10                       <span style="white-space:pre"></span>* *Author : marksman                       <span style="white-space:pre"></span>* *Aim : Linux Server can send and receive <span style="white-space:pre"></span>* *<span style="white-space:pre"></span>message.It is atom system about   <span style="white-space:pre"></span>* *Instant Messaging system.         <span style="white-space:pre"></span>* ************************************************ */#include <stdio.h>#include <sys/socket.h>#include <netinet/in.h>#include <stdlib.h>#include <memory.h>#include <string.h>#include <sys/socket.h>int main(int argc,char *argv[]){int socketfd_listen,socketfd_connect;struct sockaddr_in server_addr,client_addr;unsigned short portnum = 0x22B8;int len ;char buf[100];/* *Create the socket */if((socketfd_listen=socket(AF_INET,SOCK_STREAM,0))<0){printf("Socket create error! \n");exit(1);}/* *set the address format */bzero(&server_addr,sizeof(struct sockaddr_in));server_addr.sin_family=AF_INET;server_addr.sin_addr.s_addr=htonl(INADDR_ANY);server_addr.sin_port=htons(portnum);if(bind(socketfd_listen,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))<0){printf("bind failure!\n");return -1;}printf("bind Success!\n");if(listen(socketfd_listen,5)<0){printf("Listen failure!\n");return -1;}len=sizeof(struct sockaddr);socketfd_connect = accept(socketfd_listen, (struct sockaddr *)(&client_addr), &len);if(socketfd_connect<0){printf("accept fail !\n");return -1;}/* *Using the loop to send and receive the message. */while(1){memset(buf,0,100);len=recv(socketfd_connect,buf,100,0);if(len<0){printf("recv error!\n");exit(1);}else if(0 == len){printf("the client quit!\n");break;}else{printf("receive message is : %s \n",buf);}//memset(buf,0,100);//printf("Input message to send : ");//fgets(buf,100,stdin);len=send(socketfd_connect,buf,strlen(buf)-1,0);if(len<0){printf("Send error!\n");exit(1);}else {printf("Send succeed send : %s \n",buf);}printf("------------------------\n");}close(socketfd_listen);close(socketfd_connect);return 0;}

函数详细说明参考《UNIX环境高级编程第二版》

望网友批评指正

0 0
原创粉丝点击