linux下的Qt开发双人聊天服务器编写

来源:互联网 发布:军用软件开发规范 编辑:程序博客网 时间:2024/05/18 00:09

一、定义数据结构,初始化系统环境
 1、定义数据结构
 struct message{
  int type;        //传输类型
  long length;  //传输内容的长度
  char *value;  //传输内容
 };
 
 2、创建两个信号量sme1,sem2,都设置初值为0;


二、定义数据变量
 struct sockaddr_in addrSrv;
 struct sockaddr_in addrClient1;   //客户1的地址
 struct sockaddr_in addrClient2;   //客户2的地址
三、初始化服务器端的地址,创建tcp协议的套接字
 int sockSrv=socket();
 addrSrv.sin_addr.s_addr=htonl(INADDR_ANY);
 addrSrv.sin_family=AF_INET;
 addrSrv.sin_port=htons(8000);
四、绑定服务器端的地址
 bind(sockSrv,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
五、开始监听
 1. 接受一个客户端1的连接,无阻塞方式等待连接
 2. 判断另一个客户端2是否成功连接
  (1)成功:开始通信,通知另一客户端通信类型
  (2)不成功:提示客户端1不在线,暂时不能通信
六、 创建一个子进程 ,一个处理客户端1到客户端2的通信,另一个处理客户端2到客户端的通信
 1.父进程(pid>0):处理客户端1到客户端2的通信
  (1)sem1 +1,第一个连接接收到客户端1的数据,通知服务器
  (2)将接收到的数据发送给客户端2,sme1 -1等待下一条数据的到来
 1.子进程(pid==0):处理客户端2到客户端1的通信
    (1)sem1 +2,第一个连接接收到客户端1的数据,通知服务器
  (2)将接收到的数据发送给客户端2,sme2 -1等待下一条数据的到来

原创粉丝点击