我在嘗試讓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