Linux下简单的socket通信实例

发表于:2015-6-16 10:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Mereyct    来源:51Testing软件测试网采编

  -执行:gcc client.c -o client    后启动 ./client 客户端程序 启动前先启动./server-----------------------------------------
  server.c
1  #include <stdio.h>
2  #include <sys/socket.h>
3  #include <sys/types.h>
4  #include <string.h>
5  #include <netinet/in.h>
6  #include <stdlib.h>
7  #include <errno.h>
8  #include <unistd.h>
9  #include <arpa/inet.h>
10
11  #define MAXLINE 1024
12  int main(int argc,char **argv)
13  {
14  int listenfd,connfd;
15  struct sockaddr_in sockaddr;
16  char buff[MAXLINE];
17  int n;
18
19  memset(&sockaddr,0,sizeof(sockaddr));
20
21  sockaddr.sin_family = AF_INET;
22  sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
23  sockaddr.sin_port = htons(10004);
24
25  listenfd = socket(AF_INET,SOCK_STREAM,0);
26
27  bind(listenfd,(struct sockaddr *) &sockaddr,sizeof(sockaddr));
28
29  listen(listenfd,1024);
30
31
32  printf("Please wait for the client information\n");
33
34  for(;;)
35  {
36  if((connfd = accept(listenfd,(struct sockaddr*)NULL,NULL))==-1)
37  {
38  printf("accpet socket error: %s errno :%d\n",strerror(errno),err no);
39  continue;
40  }
41
42  n = recv(connfd,buff,MAXLINE,0);
43  buff[n] = '\0';
44  printf("recv msg from client:%s",buff);
45  close(connfd);
46  }
47  close(listenfd);
48  }
  -执行:gcc server.c -o server    后启动 ./server 服务端程序-------------------------------------------------------
  > 1、代码展示,功能介绍
  上面这个简单的socket通信的代码要实现的功能:从客户端发送一条消息后,服务端接收这条消息,并在服务端显示(recv msg from client:****)。
  > 2、首先介绍一下客户端和服务端中函数的功能以及函数的原形。
  1  #include <sys/socket.h>
  2  int socket(int family, int type, int protocol);   //指定期望的通信协议类型,返回的文件描述符和套接字描述符类似,我们成为套接字描述符,简称sockfd
  family:协议族
32/3<123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号