zl程序教程

您现在的位置是:首页 >  后端

当前栏目

socket简单多线程方式详解编程语言

多线程编程语言 详解 简单 方式 socket
2023-06-13 09:20:30 时间
 char client_message[512];  struct sockaddr_in server,client;  sock_desc=socket(AF_INET,SOCK_STREAM,0);  if(sock_desc 0){  puts("错误");  return 1;  }  server.sin_addr.s_addr=INADDR_ANY;  server.sin_port=htons(8888);  server.sin_family=AF_INET;  if(bind(sock_desc,(struct sockaddr*) server,sizeof(server)) 0){  puts("绑定错误");  }  puts("绑定完成");
 new_sock=(int*)malloc(sizeof(int));  *new_sock=accept(sock_desc,(struct sockaddr*) client,(socklen_t* )  pthread_t thread_id;  puts("接受请求");  if(*new_sock!=-1){  char ipv4addr[100];  char addr_buf[INET_ADDRSTRLEN];  socklen_t len;  if(getsockname(*new_sock,(struct sockaddr*) client, len)==-1)  {  perror("gesockname err");  }  printf("ip:%d/n",ntohs(client.sin_port));  if(pthread_create( thread_id,0, socketProcess,(void*)new_sock) 0){//创建一个线程  perror("创建线程失败");  return 1;  }  pthread_detach(thread_id);//线程分离  }  puts("新客户连接");  }  puts("连接成功");  return 0; void* socketProcess(void* socket_desc ){  int *csock = (int*)socket_desc;
 memset(buffer, 0, buffer_len);  if((bytecount = recv(*csock, buffer, buffer_len, 0))== -1){  fprintf(stderr, "接收数据错误,错误代码: %d/n", errno);  close(*csock);  return(0);  }  printf("接收到字节数 %d/n接收字符串 /"%s/"/n", bytecount, buffer);  strcat(buffer, " SERVER ECHO/n");  if((bytecount = send(*csock, buffer, strlen(buffer), 0))== -1){  fprintf(stderr, "错误发送数据 %d/n", errno);  close(*csock);  return(0);  }  printf("发送字节数 %d/n", bytecount);  }  return 0; }

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/11107.html

c