int main(int argc, char *argv[]) { WSADATA wsaData; SOCKET hSock; SOCKADDR_IN servAdr; HANDLE hSndThread, hRcvThread; if(argc!=4) { printf("Usage : %s <IP> <port> <name>\n", argv[0]); exit(1); } if(WSAStartup(MAKEWORD(2, 2), &wsaData)!=0) ErrorHandling("WSAStartup() error!"); sprintf(name, "[%s]", argv[3]); hSock=socket(PF_INET, SOCK_STREAM, 0); memset(&servAdr, 0, sizeof(servAdr)); servAdr.sin_family=AF_INET; servAdr.sin_addr.s_addr=inet_addr(argv[1]); servAdr.sin_port=htons(atoi(argv[2])); if(connect(hSock, (SOCKADDR*)&servAdr, sizeof(servAdr))==SOCKET_ERROR) ErrorHandling("connect() error"); hSndThread= (HANDLE)_beginthreadex(NULL, 0, SendMsg, (void*)&hSock, 0, NULL); hRcvThread= (HANDLE)_beginthreadex(NULL, 0, RecvMsg, (void*)&hSock, 0, NULL); WaitForSingleObject(hSndThread, INFINITE); WaitForSingleObject(hRcvThread, INFINITE); closesocket(hSock); WSACleanup(); return 0; }
int main(int argc, char *argv[]) { WSADATA wsaData; SOCKET hSocket; SOCKADDR_IN sendAdr; if(argc!=3) { printf("Usage : %s <IP> <port>\n", argv[0]); exit(1); } if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) ErrorHandling("WSAStartup() error!"); hSocket=socket(PF_INET, SOCK_STREAM, 0); memset(&sendAdr, 0, sizeof(sendAdr)); sendAdr.sin_family=AF_INET; sendAdr.sin_addr.s_addr=inet_addr(argv[1]); sendAdr.sin_port=htons(atoi(argv[2])); if(connect(hSocket, (SOCKADDR*)&sendAdr, sizeof(sendAdr))==SOCKET_ERROR) ErrorHandling("connect() error!"); send(hSocket, "123", 3, 0); send(hSocket, "4", 1, MSG_OOB); send(hSocket, "567", 3, 0); send(hSocket, "890", 3, MSG_OOB); closesocket(hSocket); WSACleanup(); return 0; }
int main(int argc, char *argv[]) { WSADATA wsaData; int i; struct hostent *host; SOCKADDR_IN addr; if(argc!=2) { printf("Usage : %s <IP>\n", argv[0]); exit(1); } if(WSAStartup(MAKEWORD(2, 2), &wsaData)!=0) ErrorHandling("WSAStartup() error!"); memset(&addr, 0, sizeof(addr)); addr.sin_addr.s_addr=inet_addr(argv[1]); host=gethostbyaddr((char*)&addr.sin_addr, 4, AF_INET); if(!host) ErrorHandling("gethost... error"); printf("Official name: %s \n", host->h_name); for(i=0; host->h_aliases[i]; i++) printf("Aliases %d: %s \n", i+1, host->h_aliases[i]); printf("Address type: %s \n", (host->h_addrtype==AF_INET)?"AF_INET":"AF_INET6"); for(i=0; host->h_addr_list[i]; i++) printf("IP addr %d: %s \n", i+1, inet_ntoa(*(struct in_addr*)host->h_addr_list[i])); WSACleanup(); return 0; }
void main(int argc,char**argv){ WSADATA wsaData; SOCKET hServSock,hClntSock; SOCKADDR_IN servAddr,clntAddr; int szClntAddr; char message[]="Hello world"; if(argc!=2){ printf("Usage : %s <PORT> \n",argv[0]); exit(1); } if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) ErrorHandling("WSAStartup() Error"); hServSock=socket(PF_INET,SOCK_STREAM,0); if(hServSock==INVALID_SOCKET) ErrorHandling("socket() error"); memset(&servAddr,0,sizeof(servAddr)); servAddr.sin_family=AF_INET; servAddr.sin_addr.s_addr=htonl(INADDR_ANY); servAddr.sin_port=htons(atoi(argv[1])); if(bind(hServSock,(SOCKADDR*)&servAddr,sizeof(servAddr))==SOCKET_ERROR) ErrorHandling("bind() error"); if(listen(hServSock,5)==SOCKET_ERROR) ErrorHandling("listen() error"); szClntAddr=sizeof(clntAddr); hClntSock=accept(hServSock,(SOCKADDR*)&clntAddr,&szClntAddr); if(hClntSock==INVALID_SOCKET) ErrorHandling("accept() error"); send(hClntSock,message,sizeof(message),0); closesocket(hClntSock); closesocket(hServSock); WSACleanup(); }
int main(int argc, char *argv[]) { WSADATA wsaData; SOCKET hSock; int sndBuf, rcvBuf, state; if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) ErrorHandling("WSAStartup() error!"); hSock=socket(PF_INET, SOCK_STREAM, 0); ShowSocketBufSize(hSock); sndBuf=1024*3, rcvBuf=1024*3; state=setsockopt(hSock, SOL_SOCKET, SO_SNDBUF, (char*)&sndBuf, sizeof(sndBuf)); if(state==SOCKET_ERROR) ErrorHandling("setsockopt() error!"); state=setsockopt(hSock, SOL_SOCKET, SO_RCVBUF, (char*)&rcvBuf, sizeof(rcvBuf)); if(state==SOCKET_ERROR) ErrorHandling("setsockopt() error!"); ShowSocketBufSize(hSock); closesocket(hSock); WSACleanup(); return 0; }
int main(int argc, char *argv[]) { WSADATA wsaData; SOCKET servSock; char message[BUF_SIZE]; int strLen; int clntAdrSz; SOCKADDR_IN servAdr, clntAdr; if(argc!=2) { printf("Usage : %s <port>\n", argv[0]); exit(1); } if(WSAStartup(MAKEWORD(2, 2), &wsaData)!=0) ErrorHandling("WSAStartup() error!"); servSock=socket(PF_INET, SOCK_DGRAM, 0); if(servSock==INVALID_SOCKET) ErrorHandling("UDP socket creation error"); memset(&servAdr, 0, sizeof(servAdr)); servAdr.sin_family=AF_INET; servAdr.sin_addr.s_addr=htonl(INADDR_ANY); servAdr.sin_port=htons(atoi(argv[1])); if(bind(servSock, (SOCKADDR*)&servAdr, sizeof(servAdr))==SOCKET_ERROR) ErrorHandling("bind() error"); while(1) { while(1) { fputs("Insert message(q to quit): ", stdout); fgets(message, sizeof(message), stdin); break; } send(servSock, message, strlen(message), 0); clntAdrSz=sizeof(clntAdr); strLen=recvfrom(servSock, message, BUF_SIZE, 0, (SOCKADDR*)&clntAdr, &clntAdrSz); message[strLen]=0; sendto(servSock, message, strLen, 0, (SOCKADDR*)&clntAdr, sizeof(clntAdr)); if(!strcmp(message,"q\n") || !strcmp(message,"Q\n")) break; printf("Message from client: %s", message); } closesocket(servSock); WSACleanup(); return 0; }
int main(int argc, char* argv[]) { WSADATA wsaData; SOCKET hLisnSock, hRecvSock; SOCKADDR_IN lisnAdr, recvAdr; WSAOVERLAPPED overlapped; WSAEVENT evObj; int idx, recvAdrSz, flags=0; if(argc!=2) { printf("Usage: %s <port>\n", argv[0]); exit(1); } if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) ErrorHandling("WSAStartup() error!"); hLisnSock=WSASocket(PF_INET, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED); memset(&lisnAdr, 0, sizeof(lisnAdr)); lisnAdr.sin_family=AF_INET; lisnAdr.sin_addr.s_addr=htonl(INADDR_ANY); lisnAdr.sin_port=htons(atoi(argv[1])); if(bind(hLisnSock, (SOCKADDR*) &lisnAdr, sizeof(lisnAdr))==SOCKET_ERROR) ErrorHandling("bind() error"); if(listen(hLisnSock, 5)==SOCKET_ERROR) ErrorHandling("listen() error"); recvAdrSz=sizeof(recvAdr); hRecvSock=accept(hLisnSock, (SOCKADDR*)&recvAdr,&recvAdrSz); if(hRecvSock==INVALID_SOCKET) ErrorHandling("accept() error"); memset(&overlapped, 0, sizeof(overlapped)); dataBuf.len=BUF_SIZE; dataBuf.buf=buf; evObj=WSACreateEvent(); //Dummy event object if(WSARecv(hRecvSock, &dataBuf, 1, &recvBytes, &flags, &overlapped, CompRoutine) ==SOCKET_ERROR) { if(WSAGetLastError()==WSA_IO_PENDING) puts("Background data receive"); } idx=WSAWaitForMultipleEvents(1, &evObj, FALSE, WSA_INFINITE, TRUE); if(idx==WAIT_IO_COMPLETION) puts("Overlapped I/O Completed"); else // If error occurred! ErrorHandling("WSARecv() error"); WSACloseEvent(evObj); closesocket(hRecvSock); closesocket(hLisnSock); WSACleanup(); return 0; }
int _tmain(){ printf("SERVER\n"); WSADATA wsaData; SOCKET hLisnSock, hRecvSock; SOCKADDR_IN lisnAdr, recvAdr; LPWSAOVERLAPPED lpOvLp; DWORD recvBytes; LPPER_IO_DATA hbInfo; int recvAdrSz; DWORD flagInfo = 0, mode = 1; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) ErrorHandling("WSAStartup() error!"); hLisnSock = WSASocket(PF_INET, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED); //make non-blocking model, mode == 1 -> "non-blocking", mode == 0 -> "blocking" ioctlsocket(hLisnSock, FIONBIO, &mode); memset(&lisnAdr, 0, sizeof(lisnAdr)); lisnAdr.sin_family = AF_INET; lisnAdr.sin_addr.s_addr = htonl(INADDR_ANY); lisnAdr.sin_port = htons(9200); if (bind(hLisnSock, (SOCKADDR*)&lisnAdr, sizeof(lisnAdr)) == SOCKET_ERROR) ErrorHandling("bind() error"); if (listen(hLisnSock, 5) == SOCKET_ERROR) ErrorHandling("listen() error"); recvAdrSz = sizeof(recvAdr); while (1){ SleepEx(100, TRUE); hRecvSock = accept(hLisnSock, (SOCKADDR*)&recvAdr, &recvAdrSz); if (hRecvSock == INVALID_SOCKET){ if (WSAGetLastError() == WSAEWOULDBLOCK) continue; else ErrorHandling("accept() error!"); } puts("Client connected..."); lpOvLp = (LPWSAOVERLAPPED)malloc(sizeof(WSAOVERLAPPED)); memset(lpOvLp, 0, sizeof(WSAOVERLAPPED)); hbInfo = (LPPER_IO_DATA)malloc(sizeof(PER_IO_DATA)); hbInfo->hClntSock = (DWORD)hRecvSock; (hbInfo->wsaBuf).buf = hbInfo->buf; (hbInfo->wsaBuf).len = BUF_SIZE; lpOvLp->hEvent = (HANDLE)hbInfo; WSARecv(hRecvSock, &(hbInfo->wsaBuf), 1, &recvBytes, &flagInfo, lpOvLp, ReadCompRoutine); } closesocket(hRecvSock); closesocket(hLisnSock); WSACleanup(); return 0; }
int main(int argc, char *argv[]) { WSADATA wsaData; SOCKET hSocket; SOCKADDR_IN servAdr; char message[BUF_SIZE]; int strLen, readLen; if(argc!=3) { printf("Usage: %s <IP> <port>\n", argv[0]); exit(1); } if(WSAStartup(MAKEWORD(2, 2), &wsaData)!=0) ErrorHandling("WSAStartup() error!"); hSocket=socket(PF_INET, SOCK_STREAM, 0); if(hSocket==INVALID_SOCKET) ErrorHandling("socket() error"); memset(&servAdr, 0, sizeof(servAdr)); servAdr.sin_family=AF_INET; servAdr.sin_addr.s_addr=inet_addr(argv[1]); servAdr.sin_port=htons(atoi(argv[2])); if(connect(hSocket, (SOCKADDR*)&servAdr, sizeof(servAdr))==SOCKET_ERROR) ErrorHandling("connect() error!"); else puts("Connected..........."); while(1) { fputs("Input message(Q to quit): ", stdout); fgets(message, BUF_SIZE, stdin); if(!strcmp(message,"q\n") || !strcmp(message,"Q\n")) break; strLen=strlen(message); send(hSocket, message, strLen, 0); readLen=0; while(1) { readLen+=recv(hSocket, &message[readLen], BUF_SIZE-1, 0); if(readLen>=strLen) break; } message[strLen]=0; printf("Message from server: %s", message); } closesocket(hSocket); WSACleanup(); return 0; }
int main(int argc, char **argv) { WSADATA wsaData; SOCKET hSocket; char message[BUF_SIZE]; int strLen; SOCKADDR_IN servAddr; int dataarray[4][4]; if(argc!=3){ printf("Usage : %s <IP> <port>\n", argv[0]); exit(1); } if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) /* Load WinhSocket 2.2 DLL */ ErrorHandling("WSAStartup() error!"); hSocket=socket(PF_INET, SOCK_STREAM, 0); /* 서버 접속을 위한 소켓 생성 */ if(hSocket==INVALID_SOCKET) ErrorHandling("hSocketet() error"); memset(&servAddr, 0, sizeof(servAddr)); servAddr.sin_family=AF_INET; servAddr.sin_addr.s_addr=inet_addr(argv[1]); servAddr.sin_port=htons(atoi(argv[2])); if( connect(hSocket, (SOCKADDR*)&servAddr, sizeof(servAddr))==SOCKET_ERROR ) /* 서버로 연결 요청 */ ErrorHandling("connect() error!"); else puts("Connected...."); while(1) { fputs("Input message(Q to quit):",stdout); fgets(message,BUF_SIZE,stdin); if(!strcmp(message,"q\n")|| !strcmp(message,"Q\n")) break; send(hSocket,message,strlen(message),0); strLen=recv(hSocket, message, BUF_SIZE-1, 0); /* 데이터 수신 */ message[strLen]=0; printf("Message from server : %s \n", message); dataarray[4][4]=recv(hSocket, dataarray[4][4], BUF_SIZE-1, 0); /* 데이터 수신 */ printf("전송된배열출력\n"); } closesocket(hSocket); /* 연결 종료 */ WSACleanup(); return 0; }
int main(int argc, char *argv[]) { WSADATA wsaData; SOCKET hServSock, hClntSock; char opinfo[BUF_SIZE]; int result, opndCnt, i; int recvCnt, recvLen; SOCKADDR_IN servAdr, clntAdr; int clntAdrSize; if(argc!=2) { printf("Usage : %s <port>\n", argv[0]); exit(1); } if(WSAStartup(MAKEWORD(2, 2), &wsaData)!=0) ErrorHandling("WSAStartup() error!"); hServSock=socket(PF_INET, SOCK_STREAM, 0); if(hServSock==INVALID_SOCKET) ErrorHandling("socket() error"); memset(&servAdr, 0, sizeof(servAdr)); servAdr.sin_family=AF_INET; servAdr.sin_addr.s_addr=htonl(INADDR_ANY); servAdr.sin_port=htons(atoi(argv[1])); if(bind(hServSock, (SOCKADDR*)&servAdr, sizeof(servAdr))==SOCKET_ERROR) ErrorHandling("bind() error"); if(listen(hServSock, 5)==SOCKET_ERROR) ErrorHandling("listen() error"); clntAdrSize=sizeof(clntAdr); for(i=0; i<5; i++) { opndCnt=0; hClntSock=accept(hServSock, (SOCKADDR*)&clntAdr, &clntAdrSize); recv(hClntSock, &opndCnt, 1, 0); recvLen=0; while((opndCnt*OPSZ+1)>recvLen) { recvCnt=recv(hClntSock, &opinfo[recvLen], BUF_SIZE-1, 0); recvLen+=recvCnt; } result=calculate(opndCnt, (int*)opinfo, opinfo[recvLen-1]); send(hClntSock, (char*)&result, sizeof(result), 0); closesocket(hClntSock); } closesocket(hServSock); WSACleanup(); return 0; }
int main(int argc, char **argv) { WSADATA wsaData; SOCKET sock; SOCKADDR_IN servAddr; HANDLE hThread1, hThread2; DWORD dwThreadID1, dwThreadID2; if(argc!=3){ // 매개변수 printf("Usage : %s <IP> <port>\n", argv[0]); exit(1); } printf("Command : @@join @@member @@out @@talk [username] [MSG]\n"); //커맨드 종류 printf("@@join "); //Join 강제입력 scanf("%s", Tname); //이름 입력 sprintf(name, "[%s]", Tname); sprintf(Joinname, "@@join [] %s", name); //join커맨드 강제 전송 if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) /* Load Winsock 2.2 DLL */ ErrorHandling("WSAStartup() error!"); sock=socket(PF_INET, SOCK_STREAM, 0); // 소켓 초기화 if(sock == INVALID_SOCKET) ErrorHandling("socket() error"); memset(&servAddr, 0, sizeof(servAddr)); servAddr.sin_family=AF_INET; servAddr.sin_addr.s_addr=inet_addr(argv[1]); //서버 주소 servAddr.sin_port=htons(atoi(argv[2])); // 서버 포트 if(connect(sock, (SOCKADDR*)&servAddr, sizeof(servAddr))==SOCKET_ERROR) ErrorHandling("connect() error"); hThread1 = (HANDLE)_beginthreadex(NULL, 0, SendMSG, (void*)sock, 0, (unsigned *)&dwThreadID1); //보낼때용 ㅡ레드 hThread2 = (HANDLE)_beginthreadex(NULL, 0, RecvMSG, (void*)sock, 0, (unsigned *)&dwThreadID2); //수신할때용 쓰레드 if(hThread1==0 || hThread2==0) { ErrorHandling("쓰레드 생성 오류"); } WaitForSingleObject(hThread1, INFINITE); WaitForSingleObject(hThread2, INFINITE); closesocket(sock); return 0; }
unsigned int WINAPI ThreadProc(LPVOID _hComport) { HANDLE hComport = (HANDLE)_hComport; ClientSession* clientSession; DWORD bytesTrans = 0; IOData* ioData = nullptr; while(1) { if(!GetQueuedCompletionStatus(hComport, &bytesTrans, (PULONG_PTR) &clientSession, (LPOVERLAPPED*) &ioData, INFINITE)) { ErrorHandling("GetQueuedCompletionStatus() error!", GetLastError()); } if(ioData->m_Mode == MODE_RECV) { if(bytesTrans == 0) { ClientManager::GetInstance()->RemoveClient(clientSession); } else { clientSession->PacketHandling(bytesTrans); clientSession->RecvFromClient(); } } SafeDelete<IOData*>(ioData); } return 0; }
unsigned int WINAPI SendThreadProc(LPVOID argv) { SOCKET hServSock = (SOCKET) argv; char inputBuffer[BUF_SIZE] = {0, }; char message[BUF_SIZE] = {0, }; unsigned char messageSize = 0; unsigned char inputSize = 0; while(true) { memset(message, 0, sizeof(char) * BUF_SIZE); memset(inputBuffer, 0, sizeof(char)*BUF_SIZE); inputSize = 0; GetInput(inputBuffer, &inputSize); messageSize = inputSize + 2; MakeMessageHeader(inputBuffer, messageSize, PACKET_CHAT, message); if(!strcmp(message, "q\n") || !strcmp(message, "Q\n")) { break; } if(SendMessage(hServSock, message, messageSize) == SOCKET_ERROR) { ErrorHandling("sendMessage() error!", GetLastError()); break; } } return 0; }
int main(int argc, char* argv[]) { WSADATA wsaData; HANDLE hComPort; SYSTEM_INFO sysInfo; LPPER_IO_DATA ioInfo; LPPER_HANDLE_DATA handleInfo; SOCKET hServSock; SOCKADDR_IN servAddr; DWORD recvBytes, flags = 0; hClientList = (SOCKET*)malloc(sizeof(SOCKET)*MAX_CLIENT); if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { ErrorHandling("WSAStartup() Error!!"); } hComPort = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0); GetSystemInfo(&sysInfo); for (DWORD i = 0; i < sysInfo.dwNumberOfProcessors; ++i) { _beginthreadex(NULL, 0, ChatThreadMain, (LPVOID)hComPort, 0, NULL); } hServSock = WSASocket(AF_INET, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED); memset(&servAddr, 0, sizeof(servAddr)); servAddr.sin_family = AF_INET; servAddr.sin_addr.s_addr = htonl(INADDR_ANY); servAddr.sin_port = htons(atoi(argv[1])); bind(hServSock, (SOCKADDR*)&servAddr, sizeof(servAddr)); listen(hServSock, 5); while (1) { SOCKET hClntSock; SOCKADDR_IN clntAddr; int addrLen = sizeof(clntAddr); hClntSock = accept(hServSock, (SOCKADDR*)&clntAddr, &addrLen); handleInfo = (LPPER_HANDLE_DATA)malloc(sizeof(PER_HANDLE_DATA)); handleInfo->hClntSock = hClntSock; memcpy(&(handleInfo->clntAddr), &clntAddr, addrLen); CreateIoCompletionPort((HANDLE)hClntSock, hComPort, (DWORD32)handleInfo, 0); ioInfo = (LPPER_IO_DATA)malloc(sizeof(PER_IO_DATA)); memset(&(ioInfo->overlapped), 0, sizeof(OVERLAPPED)); ioInfo->wsaBuf.len = BUF_SIZE; ioInfo->wsaBuf.buf = ioInfo->buffer; ioInfo->rsMode = RECV; WSARecv(handleInfo->hClntSock, &(ioInfo->wsaBuf), 1, &recvBytes, &flags, &(ioInfo->overlapped), NULL); hClientList[clientNum++] = hClntSock; } return 0; }
int main(int argc, char *argv[]) { WSADATA wsaData; SOCKET hServSock, hClntSock; SOCKADDR_IN servAddr, clntAddr; int szClntAddr; int idx = 0; char message[] = "This This This"; if (argc != 2) { printf("Usage: %s <port>\n", argv[0]); exit(1); } if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) ErrorHandling("WSAStartup() error!"); hServSock = socket(PF_INET, SOCK_STREAM, 0); if (hServSock == INVALID_SOCKET) ErrorHandling("socket() error"); memset(&servAddr, 0, sizeof(servAddr)); servAddr.sin_family = AF_INET; servAddr.sin_addr.s_addr = htonl(INADDR_ANY); servAddr.sin_port = htons(atoi(argv[1])); if (bind(hServSock, (SOCKADDR*)&servAddr, sizeof(servAddr)) == SOCKET_ERROR) ErrorHandling("bind() error"); if (listen(hServSock, 5) == SOCKET_ERROR) ErrorHandling("listen() error"); szClntAddr = sizeof(clntAddr); hClntSock = accept(hServSock, (SOCKADDR*)&clntAddr, &szClntAddr); if (hClntSock == INVALID_SOCKET) ErrorHandling("accept() error"); for (int i = 0; i < 3; i++) { send(hClntSock, &message[idx], 6, 0); idx += 6; } closesocket(hClntSock); closesocket(hServSock); WSACleanup(); return 0; }
int main(int argc, char *argv[]) { WSADATA wsaData; SOCKET hSocket; SOCKADDR_IN servAddr; char message[30]; int strLen; if(argc!=3) { printf("Usage : %s <IP>\n", argv[0]); exit(1); } if(WSAStartup(MAKEWORD(2,2), &wsaData)!=0) //소켓 라이브러리를 초기화 ErrorHandling("WSAStartup() error!"); hSocket = socket(PF_INET, SOCK_STREAM, 0); //소켓 생성 if(hSocket == INVALID_SOCKET) ErrorHandling("socket() error"); memset(&servAddr, 0, sizeof(servAddr)); servAddr.sin_family = AF_INET; servAddr.sin_addr.s_addr = inet_addr(argv[1]); servAddr.sin_port = htons(atoi(argv[2])); if(connect(hSocket, (SOCKADDR*)&servAddr, sizeof(servAddr))==SOCKET_ERROR) //생성된 소켓을 바탕으로 서버에 연결 요청 ErrorHandling("connect() error"); while(1) { POINT pon; strLen = recv(hSocket, message, sizeof(pon), 0); //recv함수 호출을 통해서 서버로부터 전송되는 데이터를 수 memcpy(&pon,message,sizeof(POINT)); if(strLen == -1){ ErrorHandling("read() error!"); break; } printf("Message from server: %d, %d \n", pon.x,pon.y); MouseControl2(pon); if(pon.x == 0 && pon.y ==0) break; } closesocket(hSocket); WSACleanup(); //소켓 라이브러리를 해제 return 0; }
void ShowSocketBufSize(SOCKET sock) { int sndBuf, rcvBuf, state, len; len=sizeof(sndBuf); state=getsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char*)&sndBuf, &len); if(state==SOCKET_ERROR) ErrorHandling("getsockopt() error"); len=sizeof(rcvBuf); state=getsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char*)&rcvBuf, &len); if(state==SOCKET_ERROR) ErrorHandling("getsockopt() error"); printf("Input buffer size: %d \n", rcvBuf); printf("Output buffer size: %d \n", sndBuf); }
int main(int argc, char *argv[]) { WSADATA wsaData; SOCKET hRecvSock; SOCKADDR_IN adr; struct ip_mreq joinAdr; char buf[BUF_SIZE]; int strLen; if(argc!=3) { printf("Usage : %s <GroupIP> <PORT>\n", argv[0]); exit(1); } if(WSAStartup(MAKEWORD(2, 2), &wsaData)!=0) ErrorHandling("WSAStartup() error!"); hRecvSock=socket(PF_INET, SOCK_DGRAM, 0); memset(&adr, 0, sizeof(adr)); adr.sin_family=AF_INET; adr.sin_addr.s_addr=htonl(INADDR_ANY); adr.sin_port=htons(atoi(argv[2])); if(bind(hRecvSock, (SOCKADDR*) &adr, sizeof(adr))==SOCKET_ERROR) ErrorHandling("bind() error"); joinAdr.imr_multiaddr.s_addr=inet_addr(argv[1]); joinAdr.imr_interface.s_addr=htonl(INADDR_ANY); if(setsockopt(hRecvSock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (void*)&joinAdr, sizeof(joinAdr))==SOCKET_ERROR) ErrorHandling("setsock() error"); while(1) { strLen=recvfrom(hRecvSock, buf, BUF_SIZE-1, 0, NULL, 0); if(strLen<0) break; buf[strLen]=0; fputs(buf, stdout); } closesocket(hRecvSock); WSACleanup(); return 0; }
void main(int argc,char**argv){ WSADATA wsaData; SOCKET sock; SOCKADDR_IN sendAddr; WSABUF dataBuf; char msg[]="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; int sendBytes=0; WSAEVENT eventObject; WSAOVERLAPPED overlapped; if(argc!=3){ printf("Usage : %s <IP> <PORT> \n",argv[0]); exit(1); } if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) ErrorHandling("WSAStartup error"); sock=WSASocket(PF_INET,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED); memset(&sendAddr,0,sizeof(sendAddr)); sendAddr.sin_family=AF_INET; sendAddr.sin_port=htons(atoi(argv[2])); sendAddr.sin_addr.s_addr=inet_addr(argv[1]); if(connect(sock,(SOCKADDR*)&sendAddr,sizeof(sendAddr))==SOCKET_ERROR) ErrorHandling("connect error"); eventObject=WSACreateEvent(); memset(&overlapped,0,sizeof(overlapped)); dataBuf.len=strlen(msg)+1; dataBuf.buf=msg; if(WSASend(sock,&dataBuf,1,&sendBytes,0,&overlapped,NULL)==SOCKET_ERROR){ if(WSAGetLastError()==WSA_IO_PENDING){ //전송할 데이터가 남아 있는 상태 puts("Background data send"); WSAWaitForMultipleEvents(1,&eventObject,TRUE,WSA_INFINITE,FALSE); WSAGetOverlappedResult(sock,&overlapped,&sendBytes,FALSE,NULL); } else ErrorHandling("WSASend error"); } printf("Send data size : %d \n",sendBytes); WSACloseEvent(eventObject); closesocket(sock); WSACleanup(); }
int main(int argc, char *argv[]) { WSADATA wsaData; SOCKET hServSock, hClntSock; SOCKADDR_IN servAdr, clntAdr; int clntAdrSz; HANDLE hThread; if(argc!=2) { printf("Usage : %s <port>\n", argv[0]); exit(1); } if(WSAStartup(MAKEWORD(2, 2), &wsaData)!=0) ErrorHandling("WSAStartup() error!"); hMutex=CreateMutex(NULL, FALSE, NULL); hServSock=socket(PF_INET, SOCK_STREAM, 0); memset(&servAdr, 0, sizeof(servAdr)); servAdr.sin_family=AF_INET; servAdr.sin_addr.s_addr=htonl(INADDR_ANY); servAdr.sin_port=htons(atoi(argv[1])); if(bind(hServSock, (SOCKADDR*) &servAdr, sizeof(servAdr))==SOCKET_ERROR) ErrorHandling("bind() error"); if(listen(hServSock, 5)==SOCKET_ERROR) ErrorHandling("listen() error"); while(1) { clntAdrSz=sizeof(clntAdr); hClntSock=accept(hServSock, (SOCKADDR*)&clntAdr,&clntAdrSz); WaitForSingleObject(hMutex, INFINITE); clntSocks[clntCnt++]=hClntSock; ReleaseMutex(hMutex); hThread= (HANDLE)_beginthreadex(NULL, 0, HandleClnt, (void*)&hClntSock, 0, NULL); printf("Connected client IP: %s \n", inet_ntoa(clntAdr.sin_addr)); } closesocket(hServSock); WSACleanup(); return 0; }
int main(int argc, char * argv[]) { WSADATA wsaData; HANDLE hComPort; SYSTEM_INFO sysInfo; LPPER_IO_DATA ioInfo; LPPER_HANDLE_DATA handleInfo; SOCKET hServSock; SOCKADDR_IN servAdr; int recvBytes, i, flags = 0; if (argc != 2) { printf("Usage : %s <port>\n", argv[0]); exit(1); } if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) ErrorHandling("WSAStartup() error"); hComPort = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0); GetSystemInfo(&sysInfo); for (i = 0; i < (int)(sysInfo.dwNumberOfProcessors); i++) _beginthreadex(NULL, 0, (unsigned int (__stdcall *)(void *))EchoThreadMain, (LPVOID)hComPort, 0, NULL); hServSock = WSASocket(AF_INET, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED); memset(&servAdr, 0, sizeof(servAdr)); servAdr.sin_family = AF_INET; servAdr.sin_addr.s_addr = htonl(INADDR_ANY); servAdr.sin_port = htons(atoi(argv[1])); bind(hServSock, (SOCKADDR *)&servAdr, sizeof(servAdr)); listen(hServSock, 5); while (1) { SOCKET hClntSock; SOCKADDR_IN clntAdr; int addrLen = sizeof(clntAdr); hClntSock = accept(hServSock, (SOCKADDR *)&clntAdr, &addrLen); handleInfo = (LPPER_HANDLE_DATA)malloc(sizeof(PER_HANDLE_DATA)); handleInfo->hClntSock = hClntSock; memcpy(&(handleInfo->clntAdr), &clntAdr, addrLen); CreateIoCompletionPort((HANDLE)hClntSock, hComPort, (DWORD)handleInfo, 0); ioInfo = (LPPER_IO_DATA)malloc(sizeof(PER_IO_DATA)); memset(&(ioInfo->overlapped), 0, sizeof(OVERLAPPED)); ioInfo->wsaBuf.len = BUF_SIZE; ioInfo->wsaBuf.buf = ioInfo->buffer; ioInfo->rwMode = READ; WSARecv(handleInfo->hClntSock, &(ioInfo->wsaBuf), 1, (LPDWORD)&recvBytes, (LPDWORD)&flags, &(ioInfo->overlapped), NULL); } return 0; }
int main(int argc, char *argv[]) { WSADATA wsaData; SOCKET hServSock, hClntSock; char message[BUF_SIZE]; int strLen, i=0, clnAdrSize; SOCKADDR_IN servAdr, clntAdr; if(argc!=2) { printf("Usage : %s <port>\n", argv[0]); exit(1); } if(WSAStartup(MAKEWORD(2,2), &wsaData) !=0 ) ErrorHandling("WSAStartup() Error!"); hServSock = socket(PF_INET, SOCK_STREAM, 0); if(hServSock == INVALID_SOCKET) ErrorHandling("socket() error"); memset(&servAdr, 0, sizeof(servAdr)); servAdr.sin_family = AF_INET; servAdr.sin_addr.s_addr = htonl(INADDR_ANY); servAdr.sin_port=htons(atoi(argv[1])); if(bind(hServSock, (SOCKADDR*)&servAdr, sizeof(servAdr)) == SOCKET_ERROR) ErrorHandling("bind() error"); if(listen(hServSock, 5) == SOCKET_ERROR) ErrorHandling("listen() error"); clnAdrSize = sizeof(clntAdr); hClntSock = accept(hServSock, (SOCKADDR*)&clntAdr, &clnAdrSize); if(hClntSock == -1) ErrorHandling("accpet() error"); else { printf("Connected client %d \n", i+1); while((strLen = recv(hClntSock, message, BUF_SIZE, 0)) != 0) send(hClntSock, message, strLen, 0); closesocket(hClntSock); } closesocket(hServSock); WSACleanup(); return 0; }
void SendErrorMSG(SOCKET socket, ErrorCode errorCode) { char protocol[BUF_SMALL] = { 0, }; char cntLen[BUF_SMALL] = { 0, }; char content[BUF_SIZE] = { 0, }; char errorMessage[BUF_SMALL] = { 0, }; switch (errorCode) { case ERROR_400_BAD_REQUEST: strcpy(errorMessage, "400 Bad Request\r\n"); break; case ERROR_404_NOT_FOUND: strcpy(errorMessage, "404 Not Found\r\n"); break; default: strcpy(errorMessage, "400 Bad Request\r\n"); break; } char servName[] = "Server : simple web server\r\n"; char cntType[] = "Content-type:text/html\r\n\r\n"; sprintf_s(protocol, "HTTP/1.0 %s", errorMessage); sprintf_s(content, "<html><head><title>NETWORK</title></head>" "<body><font size=+2><br>%s" "</font></body></html>", errorMessage); sprintf_s(cntLen, "Content-length : %d\r\n", strlen(content)); if (send(socket, protocol, strlen(protocol), 0) == SOCKET_ERROR) ErrorHandling("[DEBUG] send():protocol Error"); if (send(socket, servName, strlen(servName), 0) == SOCKET_ERROR) ErrorHandling("[DEBUG] send():cntType Error"); if (send(socket, cntLen, strlen(cntLen), 0) == SOCKET_ERROR) ErrorHandling("[DEBUG] send():cntLen Error"); if (send(socket, cntType, strlen(cntType), 0) == SOCKET_ERROR) ErrorHandling("[DEBUG] send():cntType Error"); if (send(socket, content, strlen(content), 0) == SOCKET_ERROR) ErrorHandling("[DEBUG] send():content Error"); closesocket(socket); }
void conn_init(SOCKET *serv_sock, SOCKADDR_IN *serv_addr, int port) { *serv_sock = socket(PF_INET, SOCK_STREAM, 0); if(*serv_sock == INVALID_SOCKET) ErrorHandling("socket() Error!"); serv_addr->sin_family = AF_INET; serv_addr->sin_addr.s_addr = htonl(INADDR_ANY); serv_addr->sin_port = htons(port); }
int main(int argc, char *argv[]) { WSADATA wsaData; SOCKET hServSock, hClntSock; SOCKADDR_IN servAdr, clntAdr; HANDLE hThread; DWORD dwThreadID; int clntAdrSize; if(argc!=2) { printf("Usage : %s <port>\n", argv[0]); exit(1); } if(WSAStartup(MAKEWORD(2, 2), &wsaData)!=0) ErrorHandling("WSAStartup() error!"); hServSock=socket(PF_INET, SOCK_STREAM, 0); memset(&servAdr, 0, sizeof(servAdr)); servAdr.sin_family=AF_INET; servAdr.sin_addr.s_addr=htonl(INADDR_ANY); servAdr.sin_port=htons(atoi(argv[1])); if(bind(hServSock, (SOCKADDR*) &servAdr, sizeof(servAdr))==SOCKET_ERROR) ErrorHandling("bind() error"); if(listen(hServSock, 5)==SOCKET_ERROR) ErrorHandling("listen() error"); /* 요청 및 응답 */ while(1) { clntAdrSize=sizeof(clntAdr); hClntSock=accept(hServSock, (SOCKADDR*)&clntAdr, &clntAdrSize); printf("Connection Request : %s:%d\n", inet_ntoa(clntAdr.sin_addr), ntohs(clntAdr.sin_port)); hThread=(HANDLE)_beginthreadex( NULL, 0, RequestHandler, (void*)hClntSock, 0, (unsigned *)&dwThreadID); } closesocket(hServSock); WSACleanup(); return 0; }
unsigned char GetPacketSize(SOCKET socket) { unsigned char packetSize = 0; if(RecvMessage(socket, (char*) &packetSize, 1) == SOCKET_ERROR) { ErrorHandling("GetPacketSize(): error!", GetLastError()); getchar(); exit(1); } return packetSize - 1; }
//소켓을 만들고 바인드까지 void ConnectSocket::Makelistener(int port){ this->Sock = WSASocket(PF_INET, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED); memset(&(this->Adr), 0, sizeof(this->Adr)); this->Adr.sin_family = AF_INET; this->Adr.sin_addr.s_addr = htonl(INADDR_ANY); this->Adr.sin_port = htons(port); if (bind(this->Sock, (SOCKADDR*)&this->Adr, sizeof(this->Adr)) == SOCKET_ERROR) ErrorHandling("bind() error"); return; }
void SendData(SOCKET socket, char* ct, char* fileName) { char protocol[] = "HTTP/1.0 200 OK\r\n"; char servName[] = "Server:simple web server\r\n"; char cntLen[BUF_SMALL]; char cntType[BUF_SMALL] = { 0, }; char buf[BUF_SIZE] = { 0, }; FILE* sendFile; sprintf_s(cntType, "Content-type:%s\r\n\r\n", ct); if ((sendFile = fopen(fileName, "rb")) == NULL) { SendErrorMSG(socket, ERROR_404_NOT_FOUND); return; } int fileSize; fseek(sendFile, 0, SEEK_END); fileSize = ftell(sendFile); fseek(sendFile, 0, SEEK_SET); sprintf_s(cntLen, "Content-length : %d\r\n", fileSize); if (send(socket, protocol, strlen(protocol), 0) == SOCKET_ERROR) ErrorHandling("[DEBUG] send() : protocol Error"); if (send(socket, servName, strlen(servName), 0) == SOCKET_ERROR) ErrorHandling("[DEBUG] send() : servName Error"); if (send(socket, cntType, strlen(cntType), 0) == SOCKET_ERROR) ErrorHandling("[DEBUG] send() : cntType Error"); while (!feof(sendFile)) { int read = fread(buf, 1, BUF_SIZE, sendFile); send(socket, buf, read, 0); } closesocket(socket); fclose(sendFile); }
int main(int argc, char* argv[]) { WSADATA wsaData; SOCKET hSocket; char message[BUF_SIZE]; int strLen, adrSize; SOCKADDR_IN servAdr, fromAdr; if (argc != 3){ printf("Usage : %s <IP> <port>\n", argv[0]); exit(1); } if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) ErrorHandling("WSAStartup() error!"); hSocket = socket(PF_INET, SOCK_DGRAM, 0); if (hSocket == INVALID_SOCKET) ErrorHandling("socket() error"); memset(&servAdr, 0, sizeof(servAdr)); servAdr.sin_family = AF_INET; servAdr.sin_addr.s_addr = inet_addr(argv[1]); servAdr.sin_port = htons(atoi(argv[2])); while (1) { fputs("Input message(Q to quit): ", stdout); fgets(message, sizeof(message), stdin); if (!strcmp(message, "q\n") || !strcmp(message, "Q\n")) break; sendto(hSocket, message, strlen(message), 0, (SOCKADDR*)&servAdr, sizeof(servAdr)); adrSize = sizeof(fromAdr); strLen = recvfrom(hSocket, message, BUF_SIZE, 0, (SOCKADDR*)&fromAdr, &adrSize); message[strLen] = 0; printf("Message from server: %s", message); } closesocket(hSocket); WSACleanup(); return 0; }