SPRING :: NOTE
[C] TCP/IP 에코 클라이언트 본문
반응형
에코 클라이언트 예제입니다.
에코 서버와 연동 가능합니다.
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#define IP "192.168.0.0"
#define PORT 3000
#define BUF_SIZE 1024
void ErrorHandling(char* message);
int main()
{
WSADATA wsaData;
SOCKET hSocket;
char message[BUF_SIZE];
int strLen;
SOCKADDR_IN servAdr;
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(IP);
servAdr.sin_port = htons(PORT);
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;
send(hSocket, message, strlen(message), 0);
strLen = recv(hSocket, message, BUF_SIZE-1, 0);
message[strLen] = 0;
printf("Message from server : %s", message);
}
closesocket(hSocket);
WSACleanup();
return 0;
}
void ErrorHandling(char* message)
{
fputs(message, stderr);
fputc('\n', stderr);
exit(1);
}
- 프로젝트 -> 속성 -> 구성 -> 모든구성
- 구성속성 -> 링커 -> 입력 -> 추가종속성을 더블클릭 후 "ws2_32lib" 추가
반응형
'Development Language > C · C++ · MFC' 카테고리의 다른 글
[C] TCHAR <-> char 형변환 (0) | 2016.06.28 |
---|---|
[MFC] 간단한 문자열 자르기 (0) | 2016.06.28 |
[C] winsock2 사용 시 에러 발생 (1) | 2016.06.09 |
[C] inet_addr C4996 에러 (0) | 2016.06.09 |
[C] 비동기식 에코 서버 (0) | 2016.06.09 |
Comments