2
我试图搭建一个java server
的一个和一个c++ client
在另一边的客户端/服务器应用程序。winsock和java socket之间的通信
客户:
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()
的组合导致了这个问题。
请注意,这不一定是'Winsock和Java套接字之间的通信'。在Windows上,每个套接字都是Winsock套接字,包括Java套接字。 – EJP