当前位置: 技术问答>linux和unix
单服务器端多客户端的通信问题 --高分请教!!!
来源: 互联网 发布时间:2016-03-06
本文导语: 本人想用一个服务器端去和多个客户端进行数据通信,是不是在服务器端的socket编程的时设计多线程?具体的设计思路是怎么样的? 比如服务器端和多个客户端连接后要给每个客户端进行数据的初始化,怎样去识别每个连...
本人想用一个服务器端去和多个客户端进行数据通信,是不是在服务器端的socket编程的时设计多线程?具体的设计思路是怎么样的?
比如服务器端和多个客户端连接后要给每个客户端进行数据的初始化,怎样去识别每个连接好的客户端?要设计线程的话大概怎样的一个设计方法.
那位高手给指点一下.
问题解决一定散分!
比如服务器端和多个客户端连接后要给每个客户端进行数据的初始化,怎样去识别每个连接好的客户端?要设计线程的话大概怎样的一个设计方法.
那位高手给指点一下.
问题解决一定散分!
|
针对每个连接的客户端新建线程负责收发数据.
保证每个和客户端建立连接的socket不同.自己去管理这些socket,处理完和client
的通信后,关闭该socket,从而可以继续为完成和新的client连接做准备.
保证每个和客户端建立连接的socket不同.自己去管理这些socket,处理完和client
的通信后,关闭该socket,从而可以继续为完成和新的client连接做准备.
|
/*server.c*/
#include
#include
#include "inet.h"
int init_ser( int);
int max( int a, int b)
{
int themax;
if ( a > b) themax = a;
else themax = b;
return themax;
}
void set_name( char *line, char *name)
{
strcpy( name, &line[1]);
sprintf( line, "%s join the roomn", name);
}
void add_name( char *line, char *name)
{
char theline[MAX_LINE];
strcpy( theline, name);
strcat( theline, " : ");
strcat( theline, line);
strcpy( line, theline);
}
int user_free( int user_link[MAX_CLIENT])
{
int i = 0;
while ( ( user_link[i] != 0)&&( i
#include
#include
#include "inet.h"
int init_ser( int);
int max( int a, int b)
{
int themax;
if ( a > b) themax = a;
else themax = b;
return themax;
}
void set_name( char *line, char *name)
{
strcpy( name, &line[1]);
sprintf( line, "%s join the roomn", name);
}
void add_name( char *line, char *name)
{
char theline[MAX_LINE];
strcpy( theline, name);
strcat( theline, " : ");
strcat( theline, line);
strcpy( line, theline);
}
int user_free( int user_link[MAX_CLIENT])
{
int i = 0;
while ( ( user_link[i] != 0)&&( i