当前位置: 技术问答>linux和unix
初学者的socket编程问题
来源: 互联网 发布时间:2016-02-22
本文导语: 我看了很多关于tcp客户端的例子都是与服务端建立连接后,调用发送函数发送数据,然后用接收函数等待回应。可我现在需要的是建立连接后不发送请求开始就监听等待服务端发来的消息,应该是如何处理呢?我希望...
我看了很多关于tcp客户端的例子都是与服务端建立连接后,调用发送函数发送数据,然后用接收函数等待回应。可我现在需要的是建立连接后不发送请求开始就监听等待服务端发来的消息,应该是如何处理呢?我希望的是一个发送线程只管发送,一个接收线程只管接收,这样可行吗?
|
创建两个线程,一个接受,一个发送,就可以了。
如果要代码,比较麻烦,因为不能只给你这两个线程就可以了。
我以前做过一个局域网五子棋的程序,就是用两个线程,一个接收数据,一个发送数据。
如果要代码,比较麻烦,因为不能只给你这两个线程就可以了。
我以前做过一个局域网五子棋的程序,就是用两个线程,一个接收数据,一个发送数据。
|
建立两个BlockingQueue:
1. 可由多个线程生成要发送的内容,然后将这些内容放到一个BlockingQueue中,发送线程重queue中获得内容,然后通过socket发送出去。
2. 接收线程只负责接收数据,收到的数据放到一个接收的BlockingQueue中,后面n多个线程从接收的queue中获得要出来的内容,然后处理。
1. 可由多个线程生成要发送的内容,然后将这些内容放到一个BlockingQueue中,发送线程重queue中获得内容,然后通过socket发送出去。
2. 接收线程只负责接收数据,收到的数据放到一个接收的BlockingQueue中,后面n多个线程从接收的queue中获得要出来的内容,然后处理。
|
多线程是可以的
不用多线程可以用select 或者 poll
不用多线程可以用select 或者 poll
|
2个线程 都 select 一个recv 一个send 利用pipe,当一个线程recv到数据时 write pipe,则send线程发送数据