Created
July 9, 2017 01:21
-
-
Save jun76/5a2e3480518138bee107b8fd92f03ed4 to your computer and use it in GitHub Desktop.
リンク集
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <stdio.h> | |
| #include <winsock2.h> | |
| #include <ws2tcpip.h> | |
| #define PORT 9876 //サーバープログラムとポート番号を合わせてください | |
| int main() { | |
| // IP アドレス,ポート番号,ソケット,sockaddr_in 構造体 | |
| char destination[32]; | |
| int dstSocket; | |
| struct sockaddr_in dstAddr; | |
| // 各種パラメータ | |
| char buffer[1024]; | |
| // Windows の場合 | |
| WSADATA data; | |
| WSAStartup(MAKEWORD(2,0), &data); | |
| // 相手先アドレスの入力と送る文字の入力 | |
| printf("サーバーマシンのIPは?:"); | |
| scanf("%s", destination); | |
| // sockaddr_in 構造体のセット | |
| memset(&dstAddr, 0, sizeof(dstAddr)); | |
| dstAddr.sin_port = htons(PORT); | |
| dstAddr.sin_family = AF_INET; | |
| dstAddr.sin_addr.s_addr = inet_addr(destination); | |
| // ソケットの生成 | |
| dstSocket = socket(AF_INET, SOCK_STREAM, 0); | |
| //接続 | |
| if(connect(dstSocket, (struct sockaddr *) &dstAddr, sizeof(dstAddr))){ | |
| printf("%s に接続できませんでした\n",destination); | |
| return(-1); | |
| } | |
| printf("%s に接続しました\n", destination); | |
| printf("適当なアルファベットを入力してください\n"); | |
| while (1){ | |
| scanf("%s",buffer); | |
| //パケットの送信 | |
| send(dstSocket, buffer, 1024, 0); | |
| //パケットの受信 | |
| recv(dstSocket, buffer, 1024, 0); | |
| printf("→ %s\n\n",buffer); | |
| } | |
| // Windows でのソケットの終了 | |
| closesocket(dstSocket); | |
| WSACleanup(); | |
| return(0); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| winsock参考 | |
| client, serverサンプル | |
| http://onishi-lab.jp/programming/tcp_win.html | |
| 設定参考 | |
| ws2_32.libの追加 | |
| http://www.geekpage.jp/programming/winsock/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <stdio.h> | |
| #include <winsock2.h> | |
| #include <ws2tcpip.h> | |
| #define PORT 9876 //クライアントプログラムとポート番号を合わせてください | |
| int main() { | |
| int i; | |
| // ポート番号,ソケット | |
| int srcSocket; // 自分 | |
| int dstSocket; // 相手 | |
| // sockaddr_in 構造体 | |
| struct sockaddr_in srcAddr; | |
| struct sockaddr_in dstAddr; | |
| int dstAddrSize = sizeof(dstAddr); | |
| int status; | |
| // 各種パラメータ | |
| int numrcv; | |
| char buffer[1024]; | |
| // Windows の場合 | |
| WSADATA data; | |
| WSAStartup(MAKEWORD(2,0), &data); | |
| // sockaddr_in 構造体のセット | |
| memset(&srcAddr, 0, sizeof(srcAddr)); | |
| srcAddr.sin_port = htons(PORT); | |
| srcAddr.sin_family = AF_INET; | |
| srcAddr.sin_addr.s_addr = htonl(INADDR_ANY); | |
| // ソケットの生成(ストリーム型) | |
| srcSocket = socket(AF_INET, SOCK_STREAM, 0); | |
| // ソケットのバインド | |
| bind(srcSocket, (struct sockaddr *) &srcAddr, sizeof(srcAddr)); | |
| // 接続の許可 | |
| listen(srcSocket, 1); | |
| while(1){ //ループで回すことによって何度でもクライアントからつなぐことができる | |
| // 接続の受付け | |
| printf("接続を待っています\nクライアントプログラムを動かしてください\n"); | |
| dstSocket = accept(srcSocket, (struct sockaddr *) &dstAddr, &dstAddrSize); | |
| printf("%s から接続を受けました\n", inet_ntoa(dstAddr.sin_addr)); | |
| while(1){ | |
| //パケットの受信 | |
| numrcv = recv(dstSocket, buffer, sizeof(char)*1024, 0); | |
| if(numrcv ==0 || numrcv ==-1 ){ | |
| status = closesocket(dstSocket); break; | |
| } | |
| printf("変換前 %s",buffer); | |
| for (i=0; i< numrcv; i++){ // bufの中の小文字を大文字に変換 | |
| //if(isalpha(buffer[i])) | |
| buffer[i] = toupper(buffer[i]); | |
| } | |
| // パケットの送信 | |
| send(dstSocket, buffer, sizeof(char)*1024, 0); | |
| printf("→ 変換後 %s \n",buffer); | |
| } | |
| } | |
| // Windows での終了設定 | |
| WSACleanup(); | |
| return(0); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment