[過去ログ]
MMORPG (102レス)
MMORPG http://mevius.5ch.net/test/read.cgi/gamedev/1127547668/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
18: TCPサーバ基本1/3 [sage] 2005/09/29(木) 22:35:37 ID:LE7U2HkX #pragma comment(lib, "wsock32.lib")//Winsock Library のリンクオプション追加 #include <windows.h> #include <winsock.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define PORT_NO 2500//ポート番号 #define MSG_SIZE 512//受信バッファサイズ void ErrorProccess(SOCKET, char *);//エラー処理関数 int main(int argc, char * argv[]){ WORD wVerReq ;//WinSock要求Ver. WSADATA wsadata ;//WinSockライブラリ情報 SOCKET s,sc ;//接続待ち受けソケット、通信用ソケット struct sockaddr_in addr,addrc ;//サーバーアドレス構造体、クライアントアドレス構造体 char hello[] = "Hello!\n\"bye\"で終終了\n" ;//最初に送信する文字列 char msg[MSG_SIZE + 1];//文字列送受信バッファ int ret ;//返値 http://mevius.5ch.net/test/read.cgi/gamedev/1127547668/18
19: WindowsのTCPサーバ基本2/4 [sage] 2005/09/29(木) 22:36:55 ID:LE7U2HkX wVerReq = MAKEWORD(1,1);//WinSockライブラリの要求Ver.1.1 if(WSAStartup(wVerReq, &wsadata) != 0){printf("ライブラリ初期化失敗\n");return 1;} s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if(s == INVALID_SOCKET) ErrorProccess(0, "socket()"); memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET ; addr.sin_addr.s_addr = htonl(INADDR_ANY); // 全てのインターフェイスを許可 addr.sin_port = htons(PORT_NO); ret = bind(s, (struct sockaddr *)&addr, sizeof(addr)); if(ret == SOCKET_ERROR) ErrorProccess(s, "bind()"); ret = listen(s, SOMAXCONN); if(ret == SOCKET_ERROR) ErrorProccess(s, "listen()"); ret = sizeof(addrc); sc = accept(s, (struct sockaddr *) & addrc, &ret); if(sc == INVALID_SOCKET) ErrorProccess(s, "accept()"); closesocket(s); printf("Cliant Address : %s\n", inet_ntoa(addrc.sin_addr)); printf("Cliant Port : %hu\n\n", ntohs(addrc.sin_port)); ret = send(sc, hello, (int)strlen(hello), 0); if(ret == SOCKET_ERROR) ErrorProccess(sc, "send()"); http://mevius.5ch.net/test/read.cgi/gamedev/1127547668/19
20: WindowsのTCPサーバ基本2/4 [sage] 2005/09/29(木) 22:37:56 ID:LE7U2HkX do{ ret = recv(sc, msg, MSG_SIZE, 0); if(ret == SOCKET_ERROR) ErrorProccess(sc, "recv()"); msg[ret] = '\0'; printf("受信 : %s\n", msg); ret = send(sc, msg, (int)strlen(msg), 0); if(ret == SOCKET_ERROR) ErrorProccess(sc, "send()"); printf("送信 : %s\n", msg); }while(strcmp(msg, "bye")); closesocket(sc); WSACleanup();//ソケットライブラリの終了処理 return 0; } http://mevius.5ch.net/test/read.cgi/gamedev/1127547668/20
21: WindowsのTCPサーバ基本4/4 [sage] 2005/09/29(木) 22:38:30 ID:LE7U2HkX //エラー処理関数 void ErrorProccess(SOCKET s, char * api_name){ printf("Error Area = %s , Error Code = %d\n",api_name, WSAGetLastError()); if(s != 0){closesocket(sock);s = 0;} WSACleanup(); //ソケットライブラリの終了処理 exit(1); } http://mevius.5ch.net/test/read.cgi/gamedev/1127547668/21
22: 名前は開発中のものです。 [sage] 2005/09/29(木) 22:40:07 ID:LE7U2HkX UDPの基本は、暇があったらうpローダでうpする http://mevius.5ch.net/test/read.cgi/gamedev/1127547668/22
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.008s