omc_c_last1.c

来自「本文是基于Linux的udp协议的简单网络编程。能实现简单的收发数据功能。」· C语言 代码 · 共 74 行

C
74
字号
/*最终的程序,加上了‘把输出的内容写到文件’这一部分*/#include<sys/types.h>#include<sys/socket.h>#include<stdio.h>#include<netinet/in.h>#include<arpa/inet.h>#include<unistd.h>#include<string.h>#include<netdb.h>#define LOCAL_SERVER_PORT 8092#define MAX_MSG 100int main(int argc, char *argv[]){  int s, rc, i, n, j, k ;  struct sockaddr_in cliAddr,remoAddr,recevAddr;  char msg[MAX_MSG];  char msg1[3];  FILE *fp;  int strlen=3;   s=socket(AF_INET, SOCK_DGRAM, 0);  if(s<0)  {    printf("%s:cannot open socket\n",argv[0]);    exit(1);  }   remoAddr.sin_family=AF_INET;   remoAddr.sin_port=htons(LOCAL_SERVER_PORT);   remoAddr.sin_addr.s_addr=inet_addr("192.168.2.222");   k=0x04;      fp=fopen("res.txt","w+");   if(fp==NULL)   {     printf("cannot open a file");     exit(1);   }   for(i=0;i<5;i++)   {    memset(msg1,0,30);    memcpy(msg1,&strlen,2);    msg1[2]=k;    k++;  //printf("%02x\n%02x\n%02x\n",msg1[0],msg1[1],msg1[2]);    rc=sendto(s, msg1,sizeof(msg1), 0,(struct sockaddr *) &remoAddr, sizeof(remoAddr));    if(rc<0)    {      printf("%s: cannot send data %d \n",argv[0],i-1);      close(s);      exit(1);    }    memset(msg, 0x0, MAX_MSG);    j=sizeof(cliAddr);    n=recvfrom(s, msg, MAX_MSG, 0, (struct sockaddr *) &cliAddr, &j);    if(n<0)    {      printf("%s cannot receive data\n",argv[0]);      exit(1);    }        fwrite(msg,sizeof(char),100,fp);    fputc('\n',fp);//  printf("%s\n",msg);  }   fclose(fp);   return 1;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?