Esempio n. 1
0
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;
}
Esempio n. 2
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;
}
Esempio n. 3
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();
}
Esempio n. 5
0
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;
}
Esempio n. 6
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;
}
Esempio n. 7
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;
}
Esempio n. 8
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;
}
Esempio n. 9
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;
}
Esempio n. 10
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;
}
Esempio n. 11
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;
}
Esempio n. 13
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;
}
Esempio n. 14
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;
}
Esempio n. 15
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;
}
Esempio n. 16
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;
}
Esempio n. 17
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;
}
Esempio n. 18
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);
}
Esempio n. 19
0
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();
}
Esempio n. 21
0
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;
}
Esempio n. 22
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;
}
Esempio n. 24
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);
}
Esempio n. 25
0
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);
}
Esempio n. 26
0
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;
}
Esempio n. 27
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;
}
Esempio n. 28
0
//소켓을 만들고 바인드까지
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;
}
Esempio n. 29
0
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);
}
Esempio n. 30
0
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;
}