爱问知识人 爱问教育 医院库

UDPClient代码的编写步骤是什么?

首页

UDPClient代码的编写步骤是什么?

UDPClient代码的编写步骤是什么?

提交回答

全部答案

    2018-10-24 08:52:48
  •   (1)初始化sockaddr_in结构的变量,并赋值。这里使用8888作为连接的服务程序的端口,从命令行参数读取IP地址,并且判断IP地址是否符合要求。
    (2)使用socket()来建立一个UDP socket,第二个参数为SOCK_DGRAM。
       (3)使用connect()来建立与服务程序的连接。与TCP协议不同,UDP的connect()并没有与服务程序三次握手。上面说了UDP是非连接的,实际上也可以是连接的。使用连接的UDP,kernel可以直接返回错误信息给用户程序,从而避免由于没有接收到数据而导致调用recvfrom()一直等待下去,看上去好像客户程序没有反应一样。
       (4)向服务程序发送数据,因为使用连接的UDP,所以使用write()来替代sendto()。这里的数据直接从标准输入读取用户输入。 (5)接收服务程序发回的数据,同样使用read()来替代recvfrom()。 (6)处理接收到的数据,这里是直接输出到标准输出上。
      udpclient。c程序内容:#include #include #include #include #include #include #include #include #defineMAXLINE80 #defineSERV_PORT8888 voiddo_cli(FILE*fp,intsockfd,structsockaddr*pservaddr,socklen_tservlen) { intn; charsendline[MAXLINE],recvline[MAXLINE+1]; /*connecttoserver*/if(connect(sockfd,(structsockaddr*)pservaddr,servlen)==-1) { perror(connecterror); exit(1); } while(fgets(sendline,MAXLINE,fp)!=NULL) { /*readalineandsendtoserver*/write(sockfd,sendline,strlen(sendline)); /*receivedatafromserver*/n=read(sockfd,recvline,MAXLINE); if(n==-1) { perror(readerror); exit(1); } recvline[n]=0;/*terminatestring*/fputs(recvline,stdout); } } intmain(intargc,char**argv) { intsockfd; structsockaddr_insrvaddr; /*checkargs*/if(argc!=2) { printf(usage:udpclient\n); exit(1); } /*initservaddr*/bzero(servaddr,sizeof(servaddr)); servaddr。
      sin_family=AF_INET; servaddr。sin_port=htons(SERV_PORT); if(inet_pton(AF_INET,argv[1],servaddr。
      sin_addr)=0) { printf([%s]isnotavalidIPaddress\n,argv[1]); exit(1); } sockfd=socket(AF_INET,SOCK_DGRAM,0); do_cli(stdin,sockfd,(structsockaddr*)servaddr,sizeof(servaddr)); return0; } 。

    朱***

    2018-10-24 08:52:48

类似问题

换一换
  • 软件 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):