Я пытаюсь установить соединение между сервером Java и клиентом C++. Но когда я читаю данные в моем клиенте, у меня всегда такой же странный характер (¬í). Я попытался изменить кодировку в обеих сторонах, но ничего не получилось.Связь сокета между Java и C++
Вот мой Java-код:
public class Serveur
{
public static void main(String[] args) throws Exception
{
final int PORT = 13370;
try
{
ServerSocket service= new ServerSocket(PORT);
Socket connection = service.accept();
PrintWriter pw = new PrintWriter(connection.getOutputStream());
String s = Integer.toString(5);
while(true)
{
pw.print(s.getBytes("UTF-8"));
pw.flush();
pw.close();
}
connection.close();
}
}
Я также попытался использовать OutputStream, а DataOutputStream и BufferedOutputStream.
А вот C++ код:
int main(int argc, char* argv[])
{
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
char buffer[512];
sin.sin_addr.s_addr = inet_addr("127.0.0.1");
sin.sin_family = AF_INET;
sin.sin_port = htons(13370);
sock = socket(AF_INET,SOCK_STREAM,0);
if(connect(sock, (SOCKADDR*)&sin, sizeof(sin)) != SOCKET_ERROR)
{
cout<<"connection"<<endl;
if(recv(sock, buffer, sizeof(buffer), 0) != SOCKET_ERROR)
{
string s = buffer;
wchar_t *pwchello = L"Hi";
wchar_t *pwc = (wchar_t *)malloc(sizeof(wchar_t));
char *pmbhello = buffer;
int i = mbstowcs(pwc,pmbhello, MB_CUR_MAX);
cout << i << endl;
cout<<"cout : "<<pwc<<endl;
cout <<buffer<<endl;
printf("printf : %s\n", buffer);
cout << "wsagetlasterror() : "<<WSAGetLastError();
closesocket(sock);
WSACleanup();
free(m_pBuffer);
}
return 0;
}
Как вы можете видеть, я попробовал другое решение, но безуспешно.
Заранее спасибо и извините за мой английский это может быть не очень хорошо
Это C или C++? По внешнему виду это C, (например: вы используете 'malloc'). – netcoder
Это winapi? возможно, вы хотите пометить его как таковой? В любом случае для таких вещей полезно знать, как использовать такие инструменты, как wirehark, чтобы вы могли видеть, что на самом деле находится на проводе, чтобы определить, какие из программ будут выглядеть в первую очередь. – PlasmaHH
Возможно, из-за UTF-8, я бы попробовал ASCII –