- 论坛徽章:
- 0
|
背景:主要是为了POS的接入提供服务,POS机通过海博通的网控器接入。
我要实现的功能:就是建立一个双工异步长连接的服务器端,与海波通的网控器实现长连接。
功能设计:1,创建一个服务器监听,用以接收客户端的连接(mian函数所做的操作)
2,收到客户端的连接请求后创建一个字进程用于建立跟这个客户端的连接
3,在字进程里创建一个接收线程和一个发送线程用以处理接收信息和发送信息
我主要是想,如果在创建的字进程里,做发送或者接收超时设置,如果超时,就直接exit,退出字进程。不知道这样是否存在问题。因为两个线程的资源可能都没有回收,而直接退出进程。
int main()
{
InitSocket(ip, port);//监听
while(1){
clisock=accept(svrsock,0,0);
if(fork = 0){
ConnFun();//如果收到一个监听,就创建一个字进程用于建立长连接。
}
}
}
//创建两个线程一个用于接收消息,一个用于发送消息
void ConnFun()
{
pthread_t tid[2];
void *pth_join_ret1;
void *pth_join_ret2;
int ret;
//创建接收网控器消息的线程
ret = pthread_create(&tid[0], NULL, doWorker1, NULL);
if(ret != 0){
close(clisock);
exit(-1);
}
//创建发送网控器消息的线程
ret = pthread_create(&tid[1], NULL, doWorker2, NULL);
if(ret != 0){
close(clisock);
exit(-1);
}
ret = pthread_join(tid[0], &pth_join_ret1);
ret = pthread_join(tid[1], &pth_join_ret2);
} |
|