반응형
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 |
댓글