| TCP服務(wù)器: TCP_Server.c | #include<stdio.h>#include  <stdlib.h>
 #include  <errno.h>
 #include  <string.h>
 #include  <netdb.h>
 #include  <sys/types.h>
 #include  <sys/stat.h>
 #include  <netinet/in.h>
 #include  <sys/socket.h>
 
 #define PORTNUMBER 3333
 
 int main(int argc,char*argv[])
 {
 ????int sockfd,new_fd;
 ????struct sockaddr_in server_addr;
 ????struct sockaddr_in client_addr;
 ????int sin_size;
 ????int nbytes;
 ????char buffer[1024];
 
 ????//socket
 
 ????if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
 ????{
 ????????fprintf(stderr,"Socket error:%s\n",strerror(errno));
 ????????exit(1);
 ??? }
 ????//address
 
 ????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(PORTNUMBER);
 
 ????//bind
 
 ????if(bind(sockfd,(structsockaddr *)(&server_addr),sizeof(structsockaddr_in))==-1)
 ????{
 ????????fprintf(stderr,"Bind error:%s\n",strerror(errno));
 ????????exit(1);
 ????}
 
 ????//listen
 
 ????if(listen(sockfd,5)==-1)
 ????{
 ????????fprintf(stderr,"Listen error:%s\n",strerror(errno));
 ????????exit(1);
 ????}
 
 ????while(1)
 ????{
 ????????sin_size=sizeof(structsockaddr_in);
 ?if((new_fd=accept(sockfd,(structsockaddr *)(&client_addr),&sin_size))==-1)
 ????????{
 ????????????fprintf(stderr,"Accept error:%s\n",strerror(errno));
 ????????????exit(1);
 ????????}
 ????????fprintf(stderr,"Server get connection from %s\n",inet_ntoa(client_addr.sin_addr));
 
 ????????if((nbytes=read(new_fd,buffer,1024))==-1)
 ????????{
 ????????????fprintf(stderr,"Read Error:%s\n",strerror(errno));
 ????????????exit(1);
 ????????}
 ????????buffer[nbytes]='\0';
 ????????printf("Server received %s\n",buffer);
 ????????close(new_fd);
 ????}
 }
 
 | 
 ? TCP客戶(hù)端: TCP_client.c? | #include<stdlib.h>#include  <stdio.h>
 #include  <errno.h>
 #include  <string.h>
 #include  <sys/types.h>
 #include  <sys/socket.h>
 #include  <netinet/in.h>
 #include  <netdb.h>
 
 #define PORTNUMBER 3333
 
 int main(int argc,char*argv[])
 {
 ????int sockfd;
 ????char buffer[1024];
 ????struct sockaddr_in server_addr;
 ????struct hostent*host;
 
 ????//使用hostent查詢(xún)host name
 
 ????if(argc!=2)
 ????{
 ????????fprintf(stderr,"Uage:%s hostname\a\n",argv[0]);
 ????????exit(1);
 ????}
 
 ????if((host=gethostbyname(argv[1]))==NULL)
 ????fprintf(stderr,"Gethostname error\n");
 ????????exit(1);
 ????}
 
 ????//socket
 
 ????if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
 ????{
 ????????fprintf(stderr,"Socket Error:%s\a\n",strerror(errno));
 ????????exit(1);
 ????}
 
 ????//ip port
 
 ????bzero(&server_addr,sizeof(server_addr));
 ????server_addr.sin_family=AF_INET;
 ????server_addr.sin_port=htons(PORTNUMBER);
 ????server_addr.sin_addr=*((structin_addr *)host->h_addr);
 
 ????//connect
 
 ????if(connect(sockfd,(structsockaddr *)(&server_addr),sizeof(structsockaddr_in))==-1)
 ????{
 ????????fprintf(stderr,"Connect error:%s\a\n",strerror(errno));
 ????????exit(1);
 ????}
 
 ????printf("Please input char:\n");
 ??? fgets(buffer,1024,stdin);
 ????write(sockfd,buffer,strlen(buffer));
 
 ????close(sockfd);
 ????exit(0);
 }
 
 
 | 
 --------------**************分割線(xiàn)***************-------------------
 UDP服務(wù)器: udp_server.c | ? 1  #include <stdlib.h>??2 #include<stdio.h>
 ??3 #include<errno.h>
 ??4 #include<string.h>
 ??5 #include<unistd.h>
 ??6 #include<netdb.h>
 ??7 #include<sys/socket.h>
 ??8 #include<netinet/in.h>
 ??9 #include<arpa/inet.h>
 ?10 #include<sys/types.h>
 ?11
 ?12 #define SERVER_PORT 8888
 ?13 #define MAX_MSG_SIZE 1024
 ?14
 ?15 void udps_respon(int sockfd)
 ?16 {
 ?17??? struct sockaddr_in addr;
 ?18??? int addrlen,n;
 ?19??? char msg[MAX_MSG_SIZE];
 ?20
 ?21?? ?while(1)
 ?22??? {
 ?23???? ?bzero(msg,sizeof(msg));
 ?24????? addrlen=sizeof(structsockaddr);
 ?25????? n=recvfrom(sockfd,msg,MAX_MSG_SIZE,0,(structsockaddr *)&addr,&addrlen);
 ?26????? msg[n]='\0';
 ?27????? fprintf(stdout,"Server have received %s",msg);
 ?28??? }
 ?29 }
 ?30
 ?31
 ?32 int main(void)
 ?33 {
 ?34??? int sockfd;
 ?35??? struct sockaddr_in addr;
 ?36
 ?37 //socket
 
 ?38??? sockfd=socket(AF_INET,SOCK_DGRAM,0);
 ?39??? if(sockfd<0)
 ?40??? {
 ?41?????? fprintf(stderr,"Socket Error:%s\n",strerror(errno));
 ?42?????? exit(1);
 ?43??? }
 ?44
 ?45 //ip port
 ?46??? bzero(&addr,sizeof(structsockaddr_in));
 ?47??? addr.sin_family=AF_INET;
 ?48??? addr.sin_addr.s_addr=htonl(INADDR_ANY);
 ?49?? ?addr.sin_port=htons(SERVER_PORT);
 ?50
 ?51 //bind
 
 ?52??? if(bind(sockfd,(structsockaddr *)&addr,sizeof(structsockaddr_in))<0)
 ?53??? {
 ?54?????? fprintf(stderr,"Bind Error:%s\n",strerror(errno));
 ?55?????? exit(1);
 ?56??? }
 ?57??? udps_respon(sockfd);
 ?58??? close(sockfd);
 ?59 }
 
 | 
 ? UDP客戶(hù)端: udp_client.c? | ? 1  #include <stdlib.h>??2 #include<stdio.h>
 ??3 #include<errno.h>
 ??4 #include<string.h>
 ??5 #include<netdb.h>
 ??6 #include<sys/types.h>
 ??7 #include<arpa/inet.h>
 ??8 #include<sys/socket.h>
 ??9
 ?10 #define SERVER_PORT 8888
 ?11 #define MAX_BUF_SIZE 1024
 ?12
 ?13 void udpc_requ(int sockfd,conststruct sockaddr_in*addr,int len)
 ?14 {
 ?15??? char buffer[MAX_BUF_SIZE];
 ?16?? ?int n;
 ?17??? while(1)
 ?18?? ?{
 ?19?????? printf("please input char:\n");
 ?20?????? fgets(buffer,MAX_BUF_SIZE+1,stdin);
 ?21?????? sendto(sockfd,buffer,strlen(buffer),0,(structsockaddr *)addr,len);
 ?22?????? bzero(buffer,MAX_BUF_SIZE);
 ?23??? }
 ?24 }
 ?25
 ?26
 ?27 int main(int argc,char**argv)
 ?28 {
 ?29??? int sockfd;
 ?30?? ?struct sockaddr_in addr;
 ?31??? struct hostent*host;
 ?32
 ?33??? if(argc!=2)
 ?34??? {
 ?35?????? fprintf(stderr,"Usage:%s server_ip\n",argv[0]);
 ?36?????? exit(1);
 ?37??? }
 ?38
 ?39??? if((host=gethostbyname(argv[1]))==NULL)
 ?40??? {
 ?41?????? fprintf(stderr,"Gethostname error\n");
 ?42?????? exit(1);
 ?43??? }
 ?44
 ?45 //socket
 
 ?46?? ?sockfd=socket(AF_INET,SOCK_DGRAM,0);
 ?47??? if(sockfd<0)
 ?48??? {?
 ?49?????? fprintf(stderr,"Socket Error:%s\n",strerror(errno));
 ?50?????? exit(1);
 ?51??? }
 ?52
 ?53 //ip port
 
 ?54??? bzero(&addr,sizeof(structsockaddr_in));
 ?55??? addr.sin_family=AF_INET;
 ?56??? addr.sin_port=htons(SERVER_PORT);
 ?57??? /* if(inet_aton(argv[1],&addr.sin_addr)<0)
 ?58??? {
 ?59??? fprintf(stderr,"IP error:%s\n",strerror(errno));
 ?60??? exit(1);
 ?61??? } */
 ?62??? addr.sin_addr=*((structin_addr *)host->h_addr);
 ?63?
 ?64
 ?65??? udpc_requ(sockfd,&addr,sizeof(structsockaddr_in));
 ?66??? close(sockfd);
 ?67 }
 
 | 
 |