亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 16931 | 回復(fù): 4
打印 上一主題 下一主題

[Linux] socket通信,誰能運(yùn)行一下附件的3個(gè)程序并截圖 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2018-12-07 14:04 |只看該作者 |倒序?yàn)g覽
三個(gè)程序,服務(wù)端,客戶端,中間件

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2018-12-07 14:06 |只看該作者
  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <sys/socket.h>
  4. #include <netinet/in.h>
  5. #include <netdb.h>
  6. #define        rec_length 20
  7. int main(int argc,char **argv)
  8. {
  9.         struct hostent *hp; struct sockaddr_in sin; struct servent *sp; char        buf[50];
  10.         int        s,pid;
  11.         char *service,*dest;
  12.         if(argc!=1)
  13.         {
  14.                 service=argv[1]; dest=argv[2];
  15.         }
  16.         else
  17.         {
  18.                 fprintf(stderr,"NO service assigned!\nUsage:");
  19.                 fprintf(stderr,"%s service_name destination!\n",argv[0]);
  20.                 fprintf(stderr,"Note: service_name is        defined        in /etc/services\n");
  21.                 fprintf(stderr," destination is defined in /etc/hosts\n");
  22.                 exit(-1);
  23.         }
  24.         if((sp=getservbyname(service,"tcp"))==NULL)
  25.         {
  26.                 fprintf(stderr,"Error: getservbyname"); exit(-5);
  27.         }
  28.         if((hp=gethostbyname(dest))==0)
  29.         {
  30.                 fprintf(stderr,"Error: gethostbyname"); exit(-6);
  31.         }
  32.         bzero(&sin,sizeof(sin));
  33.         bcopy(hp->h_addr,&sin.sin_addr,hp->h_length);
  34.         sin.sin_family=hp->h_addrtype; sin.sin_port=sp->s_port;
  35.         if((s=socket(AF_INET,SOCK_STREAM,0))==-1)
  36.         {
  37.                 fprintf(stderr,"Error: socket"); exit(-6);
  38.         }
  39.         if(connect(s,&sin,sizeof(sin))==-1)
  40.         {
  41.                 fprintf(stderr,"Error: connect");
  42.                 close(s);
  43.                 exit(-6);
  44.         }
  45.         // next 2 Line build request message pid=getpid();
  46.         sprintf(buf,"%5.5d%5.5d%5.5d%5.5d\n",pid,pid*2,pid*3,pid*4);
  47.         fprintf(stderr,"%s is sending request message:        %s\n",argv[0],buf);
  48.         if(write(s,buf,rec_length)!=rec_length){ //to server
  49.                 fprintf(stderr,"Write Socket s ERROR\n!"); close(s); exit(-1);
  50.         }
  51.         if(read(s,buf,rec_length)==0){ //get replay from server fprintf(stderr,"Read Socket s Error\n");
  52.                 close(s); exit(-2);
  53.         }
  54.         printf("%s get reply: %s\n",argv[0],buf); close(s);
  55.         exit(0);
  56. }
復(fù)制代碼

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2018-12-07 14:06 |只看該作者
  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <sys/socket.h>
  4. #include <netinet/in.h>
  5. #include <netdb.h>
  6. #define rec_length        20
  7. main(int argc, char **argv )
  8. {
  9.         struct sockaddr_in sin; struct servent *sp;
  10.         int s,ns,pid; char        buf[50]; char *service;
  11.         if(argc!=1) service=argv[1];
  12.         else {
  13.                 fprintf(stderr,"NO service assigned!\nUsage:\n"); fprintf(stderr,"\t%s server_name!\n",argv[0]);
  14.                 fprintf(stderr,"Note: server_name is defined in file/etc/services\n");
  15.                 exit(-1);
  16.         }
  17.         if((sp=getservbyname(service,"tcp"))==NULL){ fprintf(stderr,"Error: getservbyname"); exit(-5);}
  18.         if((s=socket(AF_INET,SOCK_STREAM,0))==-1){
  19.                 fprintf(stderr,"Error: socket create"); exit(-6);
  20.         }
  21.         bzero(&sin,sizeof(sin)); sin.sin_port=sp->s_port;
  22.         if(bind(s,&sin,sizeof(sin))==-1){
  23.                 fprintf(stderr,"Error: bind"); close(s); exit(-6);
  24.         }
  25.         if(listen(s,5)==-1){
  26.                 fprintf(stderr,"Error: listen"); close(s); exit(-6);
  27.         }
  28.         while(1){
  29.                 fprintf(stderr,"\n\t\t\t        Now wait connect ...\n");
  30.                 if((ns=accept(s,0,0))==-1){ // wait a connection */
  31.                         fprintf(stderr,"error: accept"); continue;
  32.                 }
  33.                 if((pid=fork())==-1){ // conneted, and then create child proc
  34.                         fprintf(stderr,"server: fork error!");
  35.                         close(s); exit(-1);
  36.                 }
  37.                 if(pid!=0){ //parent proce, nothing to do, and to the next loop
  38.                         close(ns);wait(0);continue;
  39.                 }
  40.                 if(pid==0){ // entered child proccedure close(s);
  41.                         printf("Receive a client connect:%s\n",argv[1]);
  42.                         if(read(ns,buf,rec_length)==0){
  43.                                 fprintf(stderr,"Read nothing from socket:ns\n"); close(ns); exit(-3);
  44.                         }
  45.                         printf("%s get message from ns:        %s\n",argv[0],buf);
  46.                         sprintf(buf,"%5.5d%5.5d%5.5d%5.5d\n",pid,pid*2,pid*3,pid*4); fprintf(stderr,"And, %s replay to client: %s\n",argv[0],buf);
  47.                         if(write(ns,buf,rec_length)!=rec_length){
  48.                                 fprintf(stderr,"Write socket ns error!\n"); close(ns); exit(-4);
  49.                         }
  50.                         close(ns); exit(0);
  51.                 }
  52.         }
  53. }
復(fù)制代碼

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2018-12-07 14:06 |只看該作者
  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <sys/socket.h>
  4. #include <netinet/in.h>
  5. #include <netdb.h>
  6. #define rec_length 20
  7. main(int argc, char **argv )
  8. {
  9.         // structure defined for request as a client
  10.         struct hostent *hp1;
  11.         struct sockaddr_in sin1; struct servent *sp1; char sbuf[50];
  12.         int ss,spid;
  13.         char        *sservice,*sdest;
  14.         // structure defined for request as a server
  15.         struct sockaddr_in sin;
  16.         struct servent *sp; int s,ns,pid;
  17.         char        buf[50]; char        *service;
  18.         // test the environment parameter: lservice, dservice, server_name
  19.         if(argc==4){ service=argv[1];sservice=argv[2]; sdest=argv[3];} else {
  20.                 fprintf(stderr,"Parameter assigned Error!\nUsage:\n");
  21.                 fprintf(stderr,"\t%s lservice dservice server_name!\n",argv[0]);
  22.                 fprintf(stderr,"Note: server_name is defined        in file/etc/hosts\n");
  23.                 fprintf(stderr,"and: lservice dservice are defined in file /etc/services\n");
  24.                 exit(-1);
  25.         }
  26.         if((sp=getservbyname(service,"tcp"))==NULL){
  27.                 fprintf(stderr,"Error: getservbyname"); exit(-5);
  28.         }
  29.         if((s=socket(AF_INET,SOCK_STREAM,0))==-1){
  30.                 fprintf(stderr,"Error: socket create"); exit(-6);
  31.         }
  32.         bzero(&sin,sizeof(sin)); sin.sin_port=sp->s_port;
  33.         if(bind(s,&sin,sizeof(sin))==-1){
  34.                 fprintf(stderr,"Error: bind"); close(s); exit(-6);
  35.         }
  36.         if(listen(s,5)==-1){
  37.                 fprintf(stderr,"Error: listen"); close(s); exit(-6);
  38.         }
  39.         while(1){
  40.                 fprintf(stderr,"\n\t\t\t        Now wait connect ...\n");
  41.                 if((ns=accept(s,0,0))==-1){ // wait a connection */
  42.                         fprintf(stderr,"error: accept"); continue;
  43.                 }
  44.                 if((pid=fork())==-1){ // conneted, and then create child proc
  45.                         fprintf(stderr,"server: fork error!"); close(s); exit(-1);
  46.                 }
  47.                 if(pid!=0){ //parent proce, nothing to do, and to the next loop
  48.                         close(ns);wait(0);continue;
  49.                 }
  50.                 if(pid==0){ // entered child proccedure
  51.                         close(s);
  52.                         printf("Receive a client connect:%s\n",argv[1]);
  53.                         if(read(ns,buf,rec_length)==0){
  54.                                 fprintf(stderr,"Read nothing from socket:ns\n"); close(ns); exit(-3);
  55.                         }
  56.                         printf("%s get message from ns:        %s\n",argv[0],buf);
  57. // request message got from the Client.
  58. // Begine a Connection to Server as a Client
  59.                         if((sp1=getservbyname(sservice,"tcp"))==NULL){
  60.                                 fprintf(stderr,"Error: getservbyname s1"); exit(-5);
  61.                         }
  62.                         if((hp1=gethostbyname(sdest))==0){
  63.                                 fprintf(stderr,"Error: gethostbyname s1"); exit(-6);
  64.                         }
  65.                         bzero(&sin1,sizeof(sin1));
  66.                         bcopy(hp1->h_addr,&sin1.sin_addr,hp1->h_length);
  67.                         sin1.sin_family=hp1->h_addrtype; sin1.sin_port=sp1->s_port;
  68.                         if((ss=socket(AF_INET,SOCK_STREAM,0))==-1){
  69.                                 fprintf(stderr,"Error: socket s1"); exit(-6);
  70.                         }
  71.                         if(connect(ss,&sin1,sizeof(sin1))==-1){ fprintf(stderr,"Error: connect s1"); close(ss); exit(-6);
  72.                         }
  73. // next 2 Line build request message
  74.         spid=getpid();

  75. sprintf(sbuf,"%5.5d%5.5d%5.5d%5.5d",spid,spid*2,spid*3,spid*4);
  76. fprintf(stderr,"%s is sending request        message: %s s1\n",argv[0],sbuf);
  77. if(write(ss,sbuf,rec_length)!=rec_length){ //to server

  78. fprintf(stderr,"Write Socket ss ERROR! s1\n"); close(ss); exit(-1);
  79. }
  80. if(read(ss,sbuf,rec_length)==0){ //from server
  81.         fprintf(stderr,"Read Socket ss Error! s1\n"); close(ss); exit(-2);
  82. }
  83. printf("%s get reply: %s\n",argv[0],sbuf); close(ss);
  84. // End the Communication with my Server
  85. // Next 2 Line, build a replay Message buf, and write it back
  86.         pid=getpid();

  87. sprintf(buf,"%5.5d%5.5d%5.5d%5.5d",pid,pid*2,pid*3,pid*4); fprintf(stderr," and, send it back to client: %s\n",buf);
  88.         if(write(ns,buf,rec_length)!=rec_length){ fprintf(stderr,"Write socket ns error!\n");
  89.                 close(ns); exit(-4);
  90.         }
  91. close(ns); exit(0);
  92. }
  93. }
  94. }
復(fù)制代碼

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2018-12-07 14:07 |只看該作者
依次是客戶端,服務(wù)端,中間件的三個(gè)程序
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP