winsock与javasocket的通信
我正在尝试构建一个客户机/服务器应用程序,一个是winsock与javasocket的通信,java,c++,sockets,winsock,Java,C++,Sockets,Winsock,我正在尝试构建一个客户机/服务器应用程序,一个是java服务器,另一个是c++客户机 客户: while(true) { sock = con.connectToServer(argv[2], port); if(sock!=NULL) { _itoa_s(clientID,sendBuffer,16,10); send(sock,sendBuffer,strlen(sendBuffer),
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());
}
}
问题是,成功连接后,服务器在.ReadLine()中的处挂起,尽管send()
函数返回1,这意味着发送数据成功
如果我删除客户端的recv()
部分,一切都正常工作。因此,似乎只有send()
和recv()
的组合才会导致问题。使用readLine()时的一个常见错误是忘记发送一行文本
我会检查你是否发了一条新线。e、 g.\n
请注意,这不一定是“Winsock和Java套接字之间的通信”。在Windows上,每个套接字都是Winsock套接字,包括Java套接字。