使用套接字将 int 从 Java 发送到 C
我只是想知道如何使用套接字将 int 从 Java 应用程序发送到 C 应用程序。我有不同的 C 程序相互通信,并且 Java 应用程序从 C 应用程序检索数据,但我无法发送。
C 应用程序充当数据库,然后 Java 应用程序将用户 ID(4 位数字)发送到 C 应用程序,如果存在,则返回该记录的详细信息。
在Java中,我尝试使用printWriter和DataOutputStream来发送数据,printWriter产生奇怪的符号,DataOutputStream产生“prof_agent.so”。
任何帮助将不胜感激,因为我目前对套接字还没有很好的掌握。
I was just wondering how to send an int from a Java application to a C application using sockets. I have got different C programs communicating with each other and have got the Java application retrieving data from the C application, but I can't work out sending.
The C application is acting as database, the Java application then sends a user id (a 4 digit number) to the C application, if it exists it returns that record's details.
In Java I have tried using a printWriter and DataOutputStream to send the data, printWriter produces weird symbols and DataOutputStream produces "prof_agent.so".
Any help would be appreciated as I don't have a good grasp of sockets at the moment.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用 DataOutputStream。 writeInt。它按照约定以网络字节顺序写入一个 int 。
在
C
端,您可以调用recv
或read
来填充4字节缓冲区,然后您可以使用ntohl
( Network-TO-Host-Long ) 将您刚刚读取的值转换为平台 int 表示形式。You can use DataOutputStream.writeInt. It writes an int already in network byte order by contract.
On a
C
side you can callrecv
, orread
to fill in the 4-byte buffer, and then you can usentohl
( Network-TO-Host-Long ) to convert the value you've just read to your platform int representation.您可以发送文本表示。因此数字 123 将作为 3 个字节“1”“2”“3”发送。
You can send the textual representation. So the number 123 would be sent as 3 bytes '1' '2' '3'.
虽然有点晚了,但还是把这个答案放在这里吧。使用 UDP 套接字:
Java 代码:
C# 代码:
It's a bit too late but let this answer be here. Using UDP sockets:
Java code:
C# code:
试试这个:
如果您能多解释一下您的问题是什么,将会有所帮助。
Try this:
It whould help if you could explain a little more what your problem is.