我是任何类型网络编程的新手。请你回答以下问题。
我正在使用Java。
情景
主题1:
Socket s = new Socket("remote machine", portNum);
//get the outputstream and write **"Message 1"**, close it.
主题2:
Socket s = new Socket("remote machine", portNum);
//get the outputstream and write **"Message 2"**, close it.
确定线程1打开套接字并在线程2实时执行之前将消息发送到远程机器。
是否保证“远程计算机”以相同的顺序读取它们,即读取消息1,然后读取消息2
注意:订单有保证,因为在发送消息1后,线程1向线程2发送批准以继续。
答案 0 :(得分:2)
尝试将网络想象为
a)异步 b)不可靠 c)无法控制的
所以,当你发送东西时,事情会在无法控制的情况下并行发生。当您向远程机器发送内容时甚至无法保证,数据(初始数据和数据 - 请参阅TCP)通过相同的路径传输。
TCP管理单个连接的顺序传输,但不是两个。如果您使用/需要两个到同一个服务器/端口,通常这样做是因为您希望它们是独立的。您使用Java进行编程,尝试在单个tcp-socket-connection上同步/分派以确保交付顺序,并使用多个并行运行。