如何在TCP/IP上创建多线程系统?
我有这个客户端服务器系统,我需要进行多线程。是TCP/IP,我现在不现在如何启动线程,因此我可以让许多客户端在服务器上发送味精。请帮我。
我也可以ACCPET和一个没有IP的简单客户端服务器系统。对于EUN,代码是GO
gcc server.c -o server
./server 1234
gcc client.c -o client
./client 127.0.0.1 1234
服务器代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
//#include "header.h"
#define SIZE 1024
int main(int argc, char *argv [])
{
int psock, sock,cli_addr_len,table[10][10],i,j,a1,a2,a3,a4,a5,res1,res2;;
char msg[SIZE];
struct sockaddr_in addr,cli_addr; // Internet socket
char reply[SIZE];
memset(&cli_addr, 0, sizeof(cli_addr));
cli_addr_len = sizeof(cli_addr);
addr.sin_family = AF_INET; // Internet socket
addr.sin_addr.s_addr = htonl(INADDR_ANY); // All interfaces
addr.sin_port = htons(atoi(argv [1]) ) ;
psock = socket(AF_INET, SOCK_STREAM, 0); // Stream socket
bind(psock, ( struct sockaddr *)&addr, sizeof(addr));
listen (psock, 1) ;
strcpy(msg,"") ;
printf("\nwaiting for new connection (port : %s) ...\n", argv [1]) ;
sock = accept(psock, (struct sockaddr *)&cli_addr, &cli_addr_len);
printf("connection established...\n");
recv(sock, msg, SIZE, 0) ;
printf("the msg is : %s ",msg);
close(sock);
close(psock);
unlink(argv [1]);
return 0;
}
客户端代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "header.h"
#define SIZE 1024
int main(int argc, char *argv [])
{
int sock, i=1 ;
char msg[SIZE],reply[SIZE];
struct sockaddr_in addr; // Internet socket
addr.sin_family = AF_INET; // Internet socket
inet_aton(argv [1], &addr.sin_addr);
addr.sin_port = htons(atoi(argv[2]) ) ;
sock = socket(AF_INET, SOCK_STREAM, 0); // Stream socket
connect(sock, ( struct sockaddr *)&addr, sizeof(addr));
strcpy(msg,"") ;
strcpy(reply,"") ;
fgets(msg,sizeof(msg),stdin);
send(sock, msg, strlen(msg) + 1, 0);
close(sock);
return 0;
}
I have this system of client-server and I need to multithread. The are TCP/ip ,and I dont now how to start the threads, so I can have many clients to send a msg on server. Please help me.
I can accpet also and a simple client server system with no ip. For to eun the code is go
gcc server.c -o server
./server 1234
gcc client.c -o client
./client 127.0.0.1 1234
Server code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
//#include "header.h"
#define SIZE 1024
int main(int argc, char *argv [])
{
int psock, sock,cli_addr_len,table[10][10],i,j,a1,a2,a3,a4,a5,res1,res2;;
char msg[SIZE];
struct sockaddr_in addr,cli_addr; // Internet socket
char reply[SIZE];
memset(&cli_addr, 0, sizeof(cli_addr));
cli_addr_len = sizeof(cli_addr);
addr.sin_family = AF_INET; // Internet socket
addr.sin_addr.s_addr = htonl(INADDR_ANY); // All interfaces
addr.sin_port = htons(atoi(argv [1]) ) ;
psock = socket(AF_INET, SOCK_STREAM, 0); // Stream socket
bind(psock, ( struct sockaddr *)&addr, sizeof(addr));
listen (psock, 1) ;
strcpy(msg,"") ;
printf("\nwaiting for new connection (port : %s) ...\n", argv [1]) ;
sock = accept(psock, (struct sockaddr *)&cli_addr, &cli_addr_len);
printf("connection established...\n");
recv(sock, msg, SIZE, 0) ;
printf("the msg is : %s ",msg);
close(sock);
close(psock);
unlink(argv [1]);
return 0;
}
Client code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "header.h"
#define SIZE 1024
int main(int argc, char *argv [])
{
int sock, i=1 ;
char msg[SIZE],reply[SIZE];
struct sockaddr_in addr; // Internet socket
addr.sin_family = AF_INET; // Internet socket
inet_aton(argv [1], &addr.sin_addr);
addr.sin_port = htons(atoi(argv[2]) ) ;
sock = socket(AF_INET, SOCK_STREAM, 0); // Stream socket
connect(sock, ( struct sockaddr *)&addr, sizeof(addr));
strcpy(msg,"") ;
strcpy(reply,"") ;
fgets(msg,sizeof(msg),stdin);
send(sock, msg, strlen(msg) + 1, 0);
close(sock);
return 0;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论