私は他の言語でソケットプログラミングを行ったことがありますが、C で直接行うことはありませんでした。Windows でポート 8080 をリッスンする単純なサーバーをセットアップしようとしています。mingw に付属の gcc を使用してコードをコンパイルしています。
#include <stdio.h>
#include <string.h>
#include <WinSock2.h>
#include <stdint.h>
#include <time.h>
int main(void) {
int s;
int len;
char buffer[1025];
struct sockaddr_in servAddr;
struct sockaddr_in clntAddr;
int clntAddrLen; //length of client socket addre
//Build local (server) socket add
memset(&servAddr, 0, sizeof(servAddr));
servAddr.sin_family = AF_INET;
servAddr.sin_port = htons(8080);
servAddr.sin_addr.s_addr = htonl(INADDR_ANY);
//create socket
if((s=socket(AF_INET, SOCK_STREAM, 0) %lt; 0 )){
perror("Error: Socket Failed!");
printf("%d\n", errno);
exit(1);
}
//bind socket to local address and port
if((bind(s,(struct sockaddr*)&servAddr, sizeof(servAddr)) %lt; 0))
{
perror("Error:bind failed!");
printf("%d\n", errno);
exit(1);
}
for(;;)
{
len = recvfrom(s,buffer, sizeof(buffer),0,(struct sockaddr*)&clntAddr, &clntAddrLen);
//send string
sendto(s, buffer, len, 0, (struct sockaddr*)&clntAddr, sizeof(clntAddr));
}
}
コードを実行すると、バインディングでエラーが発生しますが、エラーはありません。このコードは、このスレッドから取得され、わずかに変更されています: Windows Socket Programming in C
しかし、エラーコードはありません。出力には、エラーがないことが表示されます。バインドで失敗しますが、その理由はわかりません。いくつかのソースをまとめてみました。私は文字通り、Windows 上の C で hello world/3 ウェイ ハンドシェイクを実行できるものが欲しいだけです。
前もって感謝します。