java - 使用套接字编程将数据从Java发送到C

标签 java c sockets winsock2 dataoutputstream

我正在编写一个程序,使用 WinSock2 将字符串从 Java 客户端发送到 C 服务器。我正在使用 DataOutputStream 通过套接字发送数据。

C 服务器确认接收到的字节,但是当我尝试访问数据时,没有任何显示。

服务器

Socket socket = null;
    DataOutputStream dataOutputStream = null;
    DataInputStream dataInputStream = null;
 try {
  socket = new Socket("10.40.0.86", 2007);
  dataOutputStream = new DataOutputStream(socket.getOutputStream());
  dataInputStream = new DataInputStream(socket.getInputStream());
  //dataOutputStream.writeUTF("How are you doing let us see what is the maximum possible length that can be supported by the protocal");
  String line = "hey";
  dataOutputStream.writeUTF(line);
  dataOutputStream.flush();

  //System.out.println(dataInputStream.readLine());
  System.out.println((String)dataInputStream.readLine().replaceAll("[^0-9]",""));
  //System.out.println(dataInputStream.readInt());
  //System.out.println(dataInputStream.readUTF());
 } catch (UnknownHostException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }

客户

if (socket_type != SOCK_DGRAM)
            {
                retval = recv(msgsock, Buffer, sizeof(Buffer), 0);
                printf("Server: Received datagram from %s\n", inet_ntoa(from.sin_addr));

            }

输出

Server: Received 5 bytes, data "" from client
BUFFER :
Server: Echoing the same data back to client...
BUFFER :
Server: send() is OK.

最佳答案

您的 C 代码需要理解 writeUTF() 写入的数据格式(请参阅 Javadoc),或者更简单地说,您需要在 Java 端使用 write(char[]) 或 write(byte[])。

关于java - 使用套接字编程将数据从Java发送到C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6066449/

相关文章:

java - 用于 appengine/Spring 和前端之间通信的持久和异步流

java - 在 foreach 循环中为 <td> 生成动态 ID

java - 如何查找文件中的子字符串是否已存在于 hashmap 中?

java - ( Hibernate Oracle 无法插入 NULL ) 如何插入自动生成的 ID?

c - 在C中访问txt文件表中的行/列

Python tcp 套接字客户端

linux - 为什么关机报错?

java - 从已签名的小程序加载 Java 类

c - 在 C 中解析 JSON?

python - JupyterHub 内核对用户安全吗?