본문 바로가기
[ ★ ]Study/Network

TCP 에코 클라이언트 (윈도우)

by nroses-taek 2017. 6. 11.
반응형

TCP 에코 클라이언트 - TCP echo client example

TCP 에코 서버 <-- 참고

전체 소스코드

#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <stdio.h>
#include <string.h>
 
#include <WinSock2.h>
#include <Windows.h>
#define perror(msg) winperror(msg)
 
void winperror(char *msg);
 
 
#define PORT 9999
 
int main(void) {
    int sock;
    struct sockaddr_in addr;
    char buffer[1024];
    const char *msg = "hello world!!";
    int recv_len;
 
#ifndef __linux__
    WSADATA wsaData;
    WSAStartup(MAKEWORD(2, 2), &wsaData);
#endif
 
    if (sock = socket(AF_INET, SOCK_STREAM, 0) < 0) {
        perror("socket");
        return 1;
    }
    memset(&addr, 0x00, sizeof(addr));
    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    addr.sin_port = htons(PORT);
 
    if (connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
        perror("connect");
        return 1;
    }
 
    if (send(sock, msg, strlen(msg), 0) < 0) {
        perror("send");
        return 1;
    }
    if (recv_len = recv(sock, buffer, 1024, 0) < 0) {
        perror("recv");
        return 1;
    }
    buffer[recv_len] = '\0';
 
    printf("received data : %s\n", buffer);
 
    closesocket(sock);
    WSACleanup();
 
 
    return 0;
}
 
void winperror(char *msg) {
    LPVOID lpMsgBuf;
 
    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
        NULL, WSAGetLastError(),
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPTSTR)&lpMsgBuf, 0, NULL);
 
    printf("%s : %ws\n", msg, lpMsgBuf);
 
    LocalFree(lpMsgBuf);
}

 

이 또한, 마찬가지로 자세한 설명은

TCP 에코 서버 (리눅스) <-- 에 되어있다. 참고 바란다.

반응형

'[ ★ ]Study > Network' 카테고리의 다른 글

UDP 프로토콜  (0) 2017.06.12
윈도우 소켓 에러처리 (FormatMessage)  (0) 2017.06.11
TCP 에코 서버 (윈도우)  (0) 2017.06.11
TCP 에코 서버 클라이언트 (리눅스)  (0) 2017.06.11
TCP 에코 서버 예제 (리눅스)  (0) 2017.06.11

댓글