【发布时间】:2012-05-24 04:03:25
【问题描述】:
我正在尝试让 C99 客户端与 Java 服务器进行通信。但是,Java 服务器接收的数据与传输的数据不同。 (即@x�@Óf/ú.��@¨������������������Û¢ÁBp'ˇ¡`Ôf/)
我考虑过这是一个编码问题,但我遇到了障碍。我已经尝试测试这两个程序,得出的结论是 Java 服务器能够与 Java 客户端通信,而 C 客户端能够与 C 服务器通信。
但是我无法让 Java 服务器与 C 客户端通信。
Java 代码:
serverSocket = new ServerSocket(port);
Socket sock = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
String inputString = in.readLine();
System.out.println(inputString);
C 代码:
struct sockaddr_in sin;
struct hostent *host;
host = gethostbyname(hostname);
bzero(&(sin.sin_zero),8);
sin.sin_port = htons(port);
sin.sin_addr = *((struct in_addr *)host->h_addr);
sin.sin_family = AF_INET;
sock = socket(AF_INET, SOCK_STREAM, 0);
if(connect(sock, (struct sockaddr *)&sin,sizeof(struct sockaddr_in)) == -1)
...
send(sock, &message, strlen(message)+1, 0);
编辑:我尝试在两台主机之间发送“TEST”一词,但没有成功。
已修复:在传递消息变量时,我在消息变量前面有一个 & 号。
应该是:
send(sock, message, strlen(message)+1, 0);
【问题讨论】:
-
来自 C 的消息的编码是什么?
-
那么我的回答是正确的 ;)