TCP/IP 使用Socket 实现客户端与服务器端通信

TCP/IP 使用Socket 必须是服务器端使用TCPlistener类么?可不可以服务器端主动连接客户端?如果可以的话怎么连接呢?

之所以称为TCP服务器,是因为服务器端执行TCP的listen(监听连入请求)逻辑;而TCP客户端执行的是connect(请求连接)逻辑。
所以,不能可能让服务器去主动连接客户端端的。追问

您好,我想要做的是计算机从多台称重仪上去取数据。计算机是不是服务器?我能不能建立两个线程,在服务端初始化好称重仪的IP地址和端口号,使他们成为socket的源地址,让计算机去主动地connect 某一个socket的源地址?

追答

您最好先看一下称重仪手册,重点关注一下称重仪是否支持Socket通信。如果支持,再进一步查一下称重仪Socket是以服务器方式还是以客户端方式运行。弄清楚这些,问题就好办了!

    如果称重仪支持socket且支持以Server方式运行,你的计算机可以作为Client,去连接称重仪的Socket

    如果称重仪支持socket且支持以Client方式运行,你的计算机可以作为Server,等到称重仪的连接请求。

按经验,第一种方式比较常见!

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-09-17
对于服务器,你先创建一个套接字(socket),然后bind绑定一个套接地址,然后你在用listen,此时你的服务器会一直阻塞在这,处于监听状态,检查是否有客户端来connect,一旦有的话,你的服务器就会accept。
所以,是你的服务器是处于监听状态,监听是否有客户端,然后由客户端来连接服务器,服务器接受客户端的连接,而不是服务器去连接客户端。追问

您好,我想要做的是计算机从两台称重仪上去取数据。计算机是不是服务器?
我能不能建立两个线程,在服务端初始化好称重仪的IP地址和端口号,使他们成为socket的源地址,让计算机去主动地connect 某一个socket的源地址,建立连接?

追答

你可以把计算机当做服务器,称重仪当做客户端,在服务器上编写个服务器程序,然后让你的客户端去connect你的服务器(计算机),连接后,你的服务器accept后,你的服务器和客户端就可以TCP通信了,这时你可以把客户端数据发到服务器。当然也可以把算计当客户端,称重仪做服务器,也是可以的。

相似回答