gpt4 book ai didi

c# - 如何在 Java 中使用套接字

转载 作者:行者123 更新时间:2023-11-30 09:49:54 24 4
gpt4 key购买 nike

我在 Java 中使用套接字时遇到了一些问题。我正在创建一个需要不断将数据发送到服务器的应用程序。数据从客户端通过套接字发送。我正在使用以下代码:

serverAddr = InetAddress.getByName(ipAddress);

while(send)
{
soc=new Socket(serverAddr,8210);
outStream=soc.getOutputStream();
outStream.write(data);
outStream.close();
}

上面的代码工作正常,没有问题。这里我在每个循环中创建一个新的Socket对象,我认为这不是一个好的实现方法。如何使用一个 Socket 将数据发送到服务器? (我不想在每个循环中都创建一个新对象)

这是我用 C# 编写的服务器代码:

while (true)
{
Socket s = listener.AcceptSocket();
NetworkStream ns = new NetworkStream(s);
int d;
while ((d = ns.ReadByte()) >= 0)
{
//Process data here
}
s.Close();
}

我还需要在服务器端做哪些修改?

谢谢

最佳答案

请记住,创建一个新的套接字对象也会创建一个新的 TCP 连接。如果要使用单个连接,请保留输出流。您需要考虑对异常进行清理,如果中间出现暂时性网络故障,您可能还需要围绕此进行进一步的恢复。

serverAddr = InetAddress.getByName(ipAddress);


soc=new Socket(serverAddr,8210);
try {
outStream=soc.getOutputStream();
while(send)
{
outStream.write(data);
}
outStream.close();
} finally {
soc.close();
}

对于服务器端:您的代码基本上是正确的,但您还需要考虑清理(使用 using),并且正如 Marc Gravell 指出的那样,您需要确保可以找到消息使用单个 TCP 连接时的边界。

关于c# - 如何在 Java 中使用套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5496255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com