基于TCP协议下的Linux网络编程的服务器端和客户端客户端:Client.c/***************************************************Name:LinuxClient**Date:2014-11-10**Author:marksman**Aim:LinuxClientcansendandreceive**message.***************************************************/#include#include#include#include#include#includeintmain(intargc,char*argv[]){intsocketfd,receive_socket;structsockaddr_ins_add,c_add;unsignedshortportnum=0x22B8;intlen;charbuf[100];/**Createthesocket*/if((socketfd=socket(AF_INET,SOCK_STREAM,0))<0){printf("Socketcreateerror!\n");exit(1);}/**settheaddressformat*/bzero(&s_add,sizeof(structsockaddr_in));s_add.sin_family=AF_INET;s_add.sin_addr.s_addr=inet_addr("127.0.0.1");//changethestringto32-bitinternetbyte.s_add.sin_port=htons(portnum);if(connect(socketfd,(structsockaddr*)(&s_add),sizeof(structsockaddr))<0){printf("Connectfailure!\n");return-1;}elseprintf("ConnectSuccess!\n");/**Usingthelooptosendandreceivethemessage.*/while(1){memset(buf,'\0',100);printf("Inputmessagetosend:");fgets(buf,100,stdin);len=send(socketfd,buf,strlen(buf)-1,0);if(len<0){printf("senderror!\n");exit(1);}else{printf("SendSuccess!sendis:%s\n",buf);}memset(buf,'\0',100);len=recv(socketfd,buf,100,0);if(len<0){printf("recverror!\n");exit(1);}elseif(0==len){printf("clientquit!\n");exit(1);}else{printf("receivemessageis:%s\n",buf);}printf("--------------------------\n");}close(socketfd);}服务器端:Server.c/***************************************************Name:LinuxServer**Date:2014-11-10**Author:marksman**Aim:LinuxServercansendandreceive**message.Itisatomsystemabout**InstantMessagingsystem.***************************************************/#include#include#include#include#include#include#includeintmain(intargc,char*argv[]){intsocketfd_listen,socketfd_connect;structsockaddr_inserver_addr,client_addr;unsignedshortportnum=0x22B8;intlen;charbuf[100];/**Createthesocket*/if((socketfd_listen=socket(AF_INET,SOCK_STREAM,0))<0){printf("Socketcreateerror!\n");exit(1);}/**settheaddressformat*/bzero(&server_addr,sizeof(structsockaddr_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,(structsockaddr*)(&server_addr),sizeof(structsockaddr))<0){printf("bindfailure!\n");return-1;}printf("bindSuccess!\n");if(listen(socketfd_listen,5)<0){printf("Listenfailure!\n");return-1;}len=sizeof(structsockaddr);socketfd_connect=accept(socketfd_listen,(structsockaddr*)(&client_addr),&len);if(socketfd_connect<0){printf("acceptfail!\n");return-1;}/**Usingthelooptosendandreceivethemessage.*/while(1){memset(buf,0,100);len=recv(socketfd_connect,buf,100,0);if(len<0){printf("recverror!\n");exit(1);}elseif(0==len){printf("theclientquit!\n");break;}else{printf("receivemessageis:%s\n",buf);}//memset(buf,0,100);//printf("Inputmessagetosend:");//fgets(buf,100,stdin);len=send(socketfd_connect,buf,strlen(buf)-1,0);if(len<0){printf("Senderror!\n");exit(1);}else{printf("Sendsucceedsend:%s\n",buf);}printf("------------------------\n");}close(socketfd_listen);close(socketfd_connect);return0;}运行过程在一个终端下编译两个文件,运行服务器或者客户端中的一个,然后再打开一个终端,运行另一个即可。具体操作:$gcc-oserverServer.c$gcc-oclientClient.c终端A:$./server终端B:$./client