gpt4 book ai didi

java - winsock与java socket通信

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:10 26 4
gpt4 key购买 nike

我正在尝试构建一个客户端/服务器应用程序,其中一个是 java 服务器,另一个是 c++ 客户端

客户:

while(true)
{
sock = con.connectToServer(argv[2], port);

if(sock!=NULL)
{
_itoa_s(clientID,sendBuffer,16,10);
send(sock,sendBuffer,strlen(sendBuffer),0);

printf("waiting for response\n");

bytes = recv(sock,recvBuffer,sizeof(recvBuffer)-1,0);
recvBuffer[bytes] = '\0';

printf("%s",recvBuffer);

closesocket(sock);
}

Sleep(3000);
}

服务器线程:

public void run()
{
try{
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
out = new BufferedWriter (new OutputStreamWriter(clientSocket.getOutputStream()));

int signID = Integer.parseInt(in.readLine());
System.out.println("signID: " + signID);

//Precessing DataRequest for specific TrafficSign here

clientSocket.close();
}
catch(Exception ex){
System.out.println("Exception in TrafficSignServerThread -> " + ex.toString());
}
}

问题是,连接成功后,服务器在in.ReadLine()处挂了,虽然send()函数返回1,表示发送数据成功。

如果我删除客户端的 recv() 部分,一切正常。所以似乎只有 send()recv() 的组合导致了问题。

最佳答案

使用 readLine() 时的一个常见错误是忘记发送一行文本

我会检查你是否发送了换行符。例如\n

关于java - winsock与java socket通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14091295/

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