環境はvisual stdioです。
winsockでlocalhost ポート55555に接続するだけの
クライアントを作ったのですがエラーになります。
c
1#include <stdio.h> 2#include <winsock2.h> 3 4int main() 5{ 6 WSADATA wsaData; 7 struct sockaddr_in server; 8 SOCKET sock; 9 10 WSAStartup(MAKEWORD(2, 0), &wsaData); 11 12 sock = socket(AF_INET, SOCK_STREAM, 0); 13 14 server.sin_family = AF_INET; 15 server.sin_port = htons(55555); 16 17 server.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); 18 connect(sock, (struct sockaddr*) & server, sizeof(server)); 19 20 closesocket(sock); 21 22 WSACleanup(); 23 return 0; 24} 25 26
(簡易化のためgethostbynameなどはない)
ビルドに失敗します。
エラー文を見る限り
c
1server.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
ここに問題があるのでしょうか?
それとも足りないコードでもあるのでしょうか?
locaclhostにアクセスしたいので127.0.0.1にしました。
localhostを指定したり、ダブルクォーテーションを外してみたりしたのですが
だめでした。
参考サイト1
参考サイト2
参考サイト3
分からないのでお願いします。
正しい書き方。
c
1#include <stdio.h> 2#include <winsock2.h> 3#include <ws2tcpip.h> 4 5int main() 6{ 7 WSADATA wsaData; 8 struct sockaddr_in server; 9 SOCKET sock; 10 11 WSAStartup(MAKEWORD(2, 0), &wsaData); 12 13 sock = socket(AF_INET, SOCK_STREAM, 0); 14 15 server.sin_family = AF_INET; 16 server.sin_port = htons(55555); 17 inet_pton(AF_INET, "127.0.0.1", &server.sin_addr.S_un.S_addr); 18 connect(sock, (struct sockaddr*) & server, sizeof(server)); 19 20 closesocket(sock); 21 22 WSACleanup(); 23 return 0; 24} 25 26
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/11 10:55