我对ServerSocket客户端有疑问:Android服务器:我的pc带有静态IP我正在使用客户端的一个套接字连接到服务器,服务器接受套接字并获取其输入和输出流。问题是,当服务器将数据写入输出流时,我无法理解客户端如何接收消息(我知道如何)。如果服务器向客户端发送数据,考虑到客户端(android)没有可以通过互联网访问的ip,怎么可能呢。我知道长轮询,这里也使用这种方法吗?
任何连接到互联网的设备都有一个IP地址,所以你假设客户端(Android)没有IP地址是错误的。此外,套接字连接将持续存在,直到您显式关闭它或由于网络故障,因此一旦连接构建,服务器也可以在输出流上写入,客户端可以读取数据。
让我试着回答一个问题:当一个客户端没有公共互联网地址时,服务器如何向该客户端发送任何数据。
这样做的技术称为网络地址转换(NAT)。
客户端创建一个套接字,并使用该套接字向服务器发送请求。此请求首先发送到客户端的Internet网关并寻址到服务器。
互联网网关通常是一个有公共IP地址的路由器。该路由器将记住客户端已向服务器发送数据,并将数据中from
字段中的IP和端口替换为路由器的IP。
现在数据包到达服务器,当服务器决定发送应答时,它将把它寻址到路由器IP和端口。
当数据包到达路由器时,它会查找与该端口关联的本地客户端,然后重写数据包中的端口和IP以匹配本地客户端。
然后它将数据包发送到客户端。
我正在学习套接字编程,服务器套接字让我感到困惑。我为服务器套接字写了两个场景,请看一下: null 如果我的一个假设是正确的,那会回答下面的问题吗?或者,我的两种设想都是错误的。如果你能指导我找到正确的答案,或者至少是一些相关的文本来学习,我将非常感谢。
假设通过网络在两个套接字之间建立tcp连接。一个是服务器端,另一个是客户端。 谢谢
我正在开发一个使用TCP套接字的客户端(Java)/服务器(C++)应用程序。我使用的协议由2个字节开头的消息组成,这些字节定义了消息内容的类型。所以基本上,接收线程在循环中等待接收数据。但我希望使用套接字的超时通知其他主机发送数据的时间过长。
我用Java编写了套接字客户端程序。我正在使用DataOutputStream向服务器套接字发送消息。有时DataOutputstream上的writed消息不会发送到ServerSocket。我想是因为我发了信息后没有脸红。我这样做,但没有用。如果我终止类执行,那么只有我从ServerSocket接收消息。 我的代码: 已完成将消息放入队列。无限while循环将负责向服务器套接字发送日志。 文件
问题内容: 我正在编写一个Java套接字程序来从服务器读取数据,我无法控制服务器,以下是协议的约定, 2字节:幻数 2字节:数据长度 N字节:ASCII字符串数据有效载荷 大尾数表示幻数和数据长度 例如:如果我的请求是“ command / 1 / getuserlist”,如何构造以上协议的请求匹配并将响应读回到List 我是套接字编程的新手,也不知道如何构建我的请求并读回响应。 有人可以指导我
我有java服务器和只有一个客户端的时间。 客户端连接并发送卡ID(在服务器端阻止读取是合适的,因为当时只有一个客户端)