コンソールアプリケーションで通信したい
クライエントプログラムを起動もしていないのに、アクセスがありましたと表示されます。
どこが悪いのか教えてくださいませんでしょうか?
サーバー側
#include <stdio.h>
#include <winsock2.h>
int main() {
WSADATA wsaData;
LPHOSTENT host;
SOCKET s;
SOCKADDR_IN name = { AF_INET } , client;
int client_addr=sizeof(SOCKADDR_IN);
SOCKADDR_IN addr,addr2;
addr.sin_family=AF_INET;
addr.sin_port=2048;
IN_ADDR ip;//実際と異なるアドレス
ip.S_un.S_un_b.s_b1=180;
ip.S_un.S_un_b.s_b2=328;
ip.S_un.S_un_b.s_b3=9;
ip.S_un.S_un_b.s_b4=56;
addr.sin_addr=ip;
WSAStartup(2 , &wsaData);
s = socket(AF_INET , SOCK_STREAM , 0);
bind(s , (SOCKADDR *)&addr , sizeof(addr));
listen(s , 1);
int sizeaddr2=sizeof(addr2);
accept(s , (SOCKADDR *)&addr2 , &sizeaddr2);
printf("アクセスがありました\nポート %d : アドレス = %s\n" ,addr.sin_port , inet_ntoa(addr.sin_addr));
shutdown(s , SD_BOTH);
closesocket(s);
WSACleanup();
getchar();
return 0;
}
クライエント側
#include <stdio.h>
#include <winsock2.h>
int main()
{
while(1)
{
WSADATA wsaData;
SOCKET s;
WSAStartup(2 , &wsaData);
s = socket(AF_INET,SOCK_STREAM , 0);
IN_ADDR ip;//実際と異なるアドレス
ip.S_un.S_un_b.s_b1=180;
ip.S_un.S_un_b.s_b2=328;
ip.S_un.S_un_b.s_b3=9;
ip.S_un.S_un_b.s_b4=57;
SOCKADDR_IN addr;
addr.sin_family=AF_INET;
addr.sin_port=2048;
addr.sin_addr=ip;
connect(s,(PSOCKADDR)&addr,sizeof(SOCKADDR));
send(s,"OK",3,0);
shutdown(s , SD_BOTH);
closesocket(s);
WSACleanup();
}
return 0;
}
お礼
ありがとうございます!! 求めていたのは こういうものでした!!! たすかりました!