我在尝试让C99客户端与Java服务器进行通信。但是,Java服务器接收的数据与传输的数据不同。 (即@x @Ófl /ú. @¨ Û¢ÁBp'¡ÔÔfl /)C99客户端与Java服务器进行通信
我已经设想这是一个编码问题,但我碰到了一堵砖墙。我试过测试这两个程序得出结论: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消息的编码? – nhahtdh
所以我的回答是正确的;) – Morpfh