[表示 : 全て 最新50 1-99 2chのread.cgiへ]
Update time : 05/09 16:45 / Filesize : 18 KB / Number-of Response : 73
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

MMORPG



1 名前:-Я- [2005/09/24(土) 16:41:08 ID:SuwAeEoS]
ネットワークRPGを作れるようなソフトってありますか?


18 名前:TCPサーバ基本1/3 mailto: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 ;//返値


19 名前:WindowsのTCPサーバ基本2/4 mailto: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()");


20 名前:WindowsのTCPサーバ基本2/4 mailto: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;
}


21 名前:WindowsのTCPサーバ基本4/4 mailto: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);
}







[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<18KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef