加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 02:25:50 所属栏目:Java 来源:网络整理
导读:我正在创建一个程序,使用WinSock2将字符串从 Java客户端发送到C服务器.我正在使用DataOutputStream通过套接字发送数据. C服务器确认收到的字节,但是当我尝试访问数据时,不会显示任何内容. 服务器 Socket socket = null; DataOutputStream 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 %sn",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 []).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读