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套接字。