MFC / C ++ソケットプログラミングのコードを使用しましたが、サーバーとクライアントを同じPCで作成した場合にのみ機能しますが、クライアントを別のPCで使用すると、サーバーが見つからず、接続に失敗します。使用しているサーバーのローカルIPに問題があるのか、コードに問題があるのかわかりません:)!
次のコードはサーバー側です:-
#include <afx.h>
#include <afxext.h>
#include <afxsock.h>
#include <iostream>
using namespace std;
int main()
{
AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0);
AfxSocketInit();
CSocket serverSocket;
serverSocket.Create(3333);
serverSocket.Listen();
CSocket clientSocket;
while(serverSocket.Accept(clientSocket))
{
CString s;
while(s!="bye")
{
char msg[128];
if(clientSocket.Receive(msg, 128)<0)break;
s = msg;
cout<<"Client: "<<msg<<endl;
sprintf_s(msg, 128, "Your msg (%d letter) arrived successfully.",
strlen(msg));
clientSocket.Send(msg, 128);
if(s=="shutdown")exit(0);
}
clientSocket.Close();
}
return 0;
}
クライアント側の次のコード:-
#include <afx.h>
#include <afxext.h>
#include <afxsock.h>
#include <iostream>
using namespace std;
int main()
{
AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0);
AfxSocketInit();
CSocket clientSocket;
clientSocket.Create();
if(clientSocket.Connect("192.168.1.2", 3333))
{
cout<<"Connected to server."<<endl;
CString s;
while(s!="bye" && s!="shutdown")
{
char msg[128];
cin.getline(msg, 128);
s = msg;
clientSocket.Send(msg, 128);
if(clientSocket.Receive(msg, 128)<0)break;
cout<<msg<<endl;
}
}
else
{
cout<<"Cannot find server."<<endl;
}
return 0;
}