, поэтому я хотел бы подключить несколько клиентов к серверу с сокетом под ядро Linux 2.6.x.когда клиент подключен, сервер отправит приветственное сообщение клиенту, таким образом, чтобы отобразить на стандартном выводе или что-то еще. поэтому, когда соединение установлено, один поток передается функции, которая может доставить приветственное сообщениеочень client.when я использовал другой процессор для выполнения этой работы, это нормально. Однако, когда я переключился на pthread пути, клиенты не могли получить ничего от сервера. В этот момент я проверил netstat, соединение все еще былона .so приходит мой код:
client.c
// to make long story short,
// i'll just omit most of declarations and stuff that is irrelavent to the problem
#define PORT 12345
#define IP_ADDR "127.0.0.1"
void *process_to_server(int socket);
int main(){
// i'll skip building socket for your convinence
process_to_server(socket_server);
}
void *process_to_server(int socket){
ssize_t size=0;
char buffer[1024];
size=read(socket,buffer,1024);
write(1,buffer,size+1);// output the welcome message to the client's standard output
}
server.c
#define PORT 12345
void *process_to_client(int socket);
int main(){
// same spirit as above
while(1){
int addrlen=sizeof(struct sockaddr);
socket_client = accept(socket_server,(struct sockaddr*)&client_addr,&addrlen);
if(socket_client<0) continue;
pthread_t pth;
close(socket_server);
pthread_create(&pth,NULL,(void*)&process_to_client,&socket_client);
}
}
void *process_to_client(int socket){
char buffer[1024];
sprintf(buffer,"Hello There\n");
write(socket,buffer,1024);
}