//----------------------------------------------------------------- // ■小さなチャットサーバのクライアント側ソフト //----------------------------------------------------------------- // 最初、ホスト名を聞いてくるので, 同じコンピュータ内ならlocalhost, // 遠隔ホストならIPアドレスを指定する。 // サーバから"Your Name?>"と聞いてくるので、名前を入力して通信開始。 #include "stdio.h" #include "string.h" #include "winsock2.h" #include "conio.h" #include "process.h" #pragma comment(lib, "WS2_32.LIB") SOCKADDR_IN addrServer;SOCKET soc;int icount; void dspErr(char msg[]){//■エラー表示 printf("\n** %s ** Errno %d\n",msg,WSAGetLastError()); } void check2J(char INP[]){//■VT100用画面クリアメッセージを無視 if(strlen(INP)>=4) if(INP[0]==0x1B && INP[1]=='[' && INP[2]=='2' && INP[3]=='J'){ INP[0]='\n';int i=1; for(int j=4; INP[j]!=0;i++,j++) INP[i]=INP[j]; INP[i]=0; } } int checkGoodBy(char INP[]){//■サーバからのGoodByメッセージの判定 char GoodBy[]="\r\nGreet : Good by!"; int num=strlen(GoodBy); for(int i=0;i"); scanf("%s",str); IPAddress=inet_addr(str); if(IPAddress==-1) { if((PH=gethostbyname(str))!=NULL)IPAddress=*((unsigned long *)(PH->h_addr)); else { dspErr("ホスト名取得失敗"); shutdown(soc,2);closesocket(soc); WSACleanup(); return -1; } } addrServer.sin_family=AF_INET; //サーバとの接続 addrServer.sin_addr.S_un.S_addr=IPAddress; addrServer.sin_port=htons((unsigned short)2048); if(connect(soc,(LPSOCKADDR)&addrServer,sizeof(addrServer))==SOCKET_ERROR) dspErr("サーバへの接続失敗"); else{ icount=2; //子スレッド開始(2個) _beginthread(recDT ,0,NULL); _beginthread(client,0,NULL); while(icount!=0)Sleep(100); //子スレッドが終わるまで待つ } } shutdown(soc,2);closesocket(soc); WSACleanup();//終了処理 return 0; }