91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux socket如何實現服務器和客戶端對話

發布時間:2022-10-19 14:54:23 來源:億速云 閱讀:160 作者:iii 欄目:建站服務器

本篇內容介紹了“linux socket如何實現服務器和客戶端對話”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1.服務器端
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <netinet/in.h>
#define SERVPORT 3333
#define BACKLOG 10
#define MAX_CONNECTED_NO 10
#define MAXDATASIZE 5

int main()
{
  struct sockaddr_in server_sockaddr,client_sockaddr;
  int sin_size,recvbytes;
  int sockfd,client_fd;
  char buf[MAXDATASIZE];
/*創建socket*/
  if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1){
    perror("socket");
    exit(1);
  }
  printf("socket success!,sockfd=%d\n",sockfd);
/*設置服務器sockaddr_in結構*/
  server_sockaddr.sin_family=AF_INET;
  server_sockaddr.sin_port=htons(SERVPORT);
  server_sockaddr.sin_addr.s_addr=INADDR_ANY;
  bzero(&(server_sockaddr.sin_zero),8);
/*綁定socket和端口*/
  if(bind(sockfd,(struct sockaddr *)&server_sockaddr,sizeof(struct sockaddr))==-1){
    perror("bind");
    exit(1);
  }
  printf("bind success!\n");
/*監聽客戶端請求*/
  if(listen(sockfd,BACKLOG)==-1){
    perror("listen");
    exit(1);
  }
  printf("listening....\n");
/*接受客戶端請求*/
  if((client_fd=accept(sockfd,(struct sockaddr *)&client_sockaddr,&sin_size))==-1){
    perror("accept");
    exit(1);
  }
/*接收客戶端信息*/
  if((recvbytes=recv(client_fd,buf,MAXDATASIZE,0))==-1){
    perror("recv");
    exit(1);
  }
  printf("received a connection :%s\n",buf);
/*關閉socket*/
  close(sockfd);
}
2.客戶端
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#define SERVPORT 3333
#define MAXDATASIZE 100
main(int argc,char *argv[]){
  int sockfd,sendbytes;
  char buf[MAXDATASIZE];
  struct hostent *host;
  struct sockaddr_in serv_addr;
/*argc<2,表示沒有輸入主機名,主機句是IP地址形式,如“192.168.1.1”*/
  if(argc < 2){
    fprintf(stderr,"Please enter the server's hostname!\n");
    exit(1);
  }
/*獲取主機名,地址解析函數*/
  if((host=gethostbyname(argv[1]))==NULL){
    perror("gethostbyname");
    exit(1);
  }
/*創建socket*/
  if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){
    perror("socket");
    exit(1);
  }
/*設置serv_addr結構參數*/
  serv_addr.sin_family=AF_INET;
  serv_addr.sin_port=htons(SERVPORT);
  serv_addr.sin_addr=*((struct in_addr *)host->h_addr);
  bzero(&(serv_addr.sin_zero),8);
/*向服務器請求連接,serv_addr是服務器端地址*/
  if(connect(sockfd,(struct sockaddr *)&serv_addr,\
    sizeof(struct sockaddr))==-1){
    perror("connect");
    exit(1);
  }
/*發送消息給服務器,此時可以在服務器端看到"hello"字樣*/
  if((sendbytes=send(sockfd,"hello",5,0))==-1){
    perror("send");
    exit(1);
  }
/*關閉連接*/
  close(sockfd);
}

編譯步驟

#gcc server.c -o server
#./server                       //此時服務器端在監聽
#gcc client.c -o client
#./client 172.31.100.236        //客戶端向服務器端發送“hello",服務器端監聽終止

“linux socket如何實現服務器和客戶端對話”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

库车县| 阳东县| 漳州市| 苗栗市| 翁源县| 沭阳县| 大埔县| 筠连县| 峨山| 青龙| 延安市| 八宿县| 许昌县| 郴州市| 虹口区| 三河市| 洪雅县| 普兰店市| 建瓯市| 韩城市| 武汉市| 邢台县| 宜宾县| 文成县| 乌兰县| 汾西县| 淳化县| 思茅市| 台湾省| 海城市| 嫩江县| 洛宁县| 长岛县| 青岛市| 广东省| 石阡县| 永和县| 印江| 宽甸| 墨玉县| 广州市|