winsock与Java套接字之间的通信

communication between winsock and java socket

本文关键字:通信 之间 套接字 Java winsock      更新时间:2023-10-16

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

客户:

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 responsen");
            bytes = recv(sock,recvBuffer,sizeof(recvBuffer)-1,0);
            recvBuffer[bytes] = '';
            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