a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

C語言編寫基于TCP和UDP協(xié)議的Socket通信程序示例

2020-01-26 14:40:49
字體:
供稿:網(wǎng)友

Tcp多線程服務(wù)器和客戶端程序
服務(wù)器程序:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <arpa/inet.h>#include <sys/types.h>#include <sys/socket.h>#include <unistd.h>#define PORT 8082#define BUFSIZE 512char buf[BUFSIZE+1];void* fun(void* x){    //printf("enter thread!/r/n");    int new_fd=*((int*)x);  while(1)    {    int z=read(new_fd,buf,BUFSIZE);//第 6 步 讀取套接字  if(z==0){printf("client close !");break;};  buf[z]='/0';  printf("%s/r/n",buf);//打印  };}int newfd[512];int inewfd=0;int main(){  //第 1 步 創(chuàng)建套接字  int sockfd=socket(AF_INET,SOCK_STREAM,0);  //第 2 步 設(shè)置地址結(jié)構(gòu)體  struct sockaddr_in svraddr;  svraddr.sin_family=AF_INET;//使用 internet 協(xié)議  svraddr.sin_port=htons(PORT);  inet_aton("0.0.0.0",&svraddr.sin_addr);  //第 3 步 綁定  int ret=bind(sockfd,(struct sockaddr*)&svraddr,sizeof(svraddr));    if(ret<0){printf("error bind!/r/n");exit(-1);};  //第 4 步 監(jiān)聽  listen(sockfd,128);  while(1)  {  newfd[inewfd++]=accept(sockfd,NULL,NULL); //第 5 步 接收  pthread_t ntid;    pthread_create(&ntid,NULL,fun,(void*)&(newfd[inewfd-1]));   }}

注意:

gcc server.c -o server -lpthread

客戶端程序 cli.c

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <arpa/inet.h>#include <sys/types.h>#include <sys/socket.h>#include <unistd.h>#define PORT 8082#define BUFSIZE 512char buf[BUFSIZE+1];int main(){  //第 1 步 創(chuàng)建一個體套接字  int sockfd=socket(AF_INET,SOCK_STREAM,0);  //第 2 步 設(shè)置 addr 結(jié)構(gòu)體  struct sockaddr_in svraddr;  svraddr.sin_family=AF_INET;//使用 internet 協(xié)議  svraddr.sin_port=htons(PORT);  inet_aton("127.0.0.1",&svraddr.sin_addr);  //第 3 步 連接服務(wù)器  connect(sockfd,(struct sockaddr*)&svraddr,sizeof(svraddr));  while(1)  {  scanf("%s",buf);  write(sockfd,buf,strlen(buf)); //第 4 步 向套接字中寫入字符串  }}


Udp的服務(wù)器程序和客戶端程序

服務(wù)器程序:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <arpa/inet.h>#include <sys/types.h>#include <sys/socket.h>#include <unistd.h>#define PORT 8082#define BUFSIZE 512char buf[BUFSIZE+1];int main(){  //第 1 步 創(chuàng)建套接字  int sockfd=socket(AF_INET,SOCK_DGRAM,0);  //第 2 步 設(shè)置地址結(jié)構(gòu)體  struct sockaddr_in svraddr;  svraddr.sin_family=AF_INET;//使用 internet 協(xié)議  svraddr.sin_port=htons(PORT);  inet_aton("0.0.0.0",&svraddr.sin_addr);  //第 3 步 綁定  int ret=bind(sockfd,(struct sockaddr*)&svraddr,sizeof(svraddr));  if(ret<0){printf("cannot bind!/r/n");exit(-1);};  while(1)  {        struct sockaddr_in cli;        int len=sizeof(cli);    int z=recvfrom(sockfd,buf,BUFSIZE,0,(struct sockaddr*)&cli,&len);//第 6 步 讀取套接字      buf[z]='/0';    printf("%s/r/n",buf);//打印  }}

客戶端程序 cli.c

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <arpa/inet.h>#include <sys/types.h>#include <sys/socket.h>#include <unistd.h>#define PORT 8082#define BUFSIZE 512char buf[BUFSIZE+1];int main(){  //第 1 步 創(chuàng)建一個體套接字  int sockfd=socket(AF_INET,SOCK_DGRAM,0);  //第 2 步 設(shè)置 addr 結(jié)構(gòu)體  struct sockaddr_in svraddr;  svraddr.sin_family=AF_INET;//使用 internet 協(xié)議  svraddr.sin_port=htons(PORT);  inet_aton("127.0.0.1",&svraddr.sin_addr);  //第 3 步 連接服務(wù)器  //connect(sockfd,(struct sockaddr*)&svraddr,sizeof(svraddr));  while(1)  {  scanf("%s",buf);  sendto(sockfd,buf,strlen(buf),0,(struct sockaddr*)&svraddr,sizeof(svraddr)); //第 4 步 向套接字中寫入字符串  }}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 国产精品日韩欧美一区二区三区 | 99精品免费视频 | 国产精品成av人在线视午夜片 | 视频精品一区 | www.视频在线观看 | 久久精品久久精品 | 亚洲国产成人在线视频 | 亚洲第一区在线 | 毛片aaaaa | 爱爱视频免费 | 日韩高清中文字幕 | www久久99| 国产一区二区视频在线观看 | 天天精品 | 亚洲免费视频在线观看 | 在线激情网| 黄色三级网 | 91亚洲国产成人精品性色 | 91电影在线观看 | 国产精品国产自产拍高清 | 免费看黄网址 | 国产精品久久久久久久久岛 | 密色视频 | 日韩精品1区2区 | 欧美乱轮 | 精品国产髙清在线看国产毛片 | 国产精品乱码一区二区三区 | 午夜激情综合 | 日日做夜夜爱 | 91久久久久久久久 | 久久国产精品99久久久久久老狼 | 在线久草 | www.污污视频 | 成人av一区二区三区 | 国产综合精品一区二区三区 | 在线成人免费视频 | 国产高清网站 | 不卡黄色 | 国产中文字幕在线观看 | 国产精品成人一区二区三区夜夜夜 | 中国大陆高清aⅴ毛片 |