728x90
반응형
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <winsock2.h>
#include <sys/types.h>
#include <NetCon.h>
#include <atlsocket.h>
#define PORT 10020 /* 접속할 서버 프로그램의 포트 번호 */
int main(int argc, char *argv[])
{
struct sockaddr_in ServerAddr; /* 접속할 서버의 주소 구조체 */
struct hostent *prthost; /* 호스트표 항목에 대한 포인터*/
SOCKET client; /* 클라이언트 소켓의 기술자 */
int port = PORT; /* 연결할 서버의 포트 번호 */
char *host = "localhost"; /* 지역 호스트의 기호 이름을 지정 */
char buf[10] = "Hello"; /* 서버에게 전달할 데이터("Hello")를 저장한 버퍼 */
int recvbyte = 0; /* 서버로부터 수신한 데이터의 길이*/
// 윈도우 운영체제에서 필요한 설정
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
return -1;
// 연결할 서버 주소 구조체의 내용을 memset 함수로 모두 0으로 초기화한 후에
// 각 필드에 필요한 값들을 설정한다.
// 따라서, 값이 설정되지 않은 필드는 0으로 초기화된다.
memset(&ServerAddr, 0, sizeof(ServerAddr));
ServerAddr.sin_family = AF_INET; /* 인터넷 주소 체계 설정 */
ServerAddr.sin_port = htons(port); /* 포트 번호 설정 */
prthost = gethostbyname(host); /* 호스트 이름에서 IP 주소 설정 */
// prthost = ;
memcpy(&ServerAddr.sin_addr, prthost->h_addr, prthost->h_length);
// 클라이언트의 소켓 생성
client = socket(AF_INET, SOCK_STREAM, 0);
if (client < 0)
{
printf("클라이언트 소켓 생성 실패\n");
exit(1);
}
//서버와의 연결 접속
if (connect(client, (struct sockaddr *)&ServerAddr, sizeof(ServerAddr)) < 0)
{
printf("서버와 연결 실패\n");
exit(1);
}
// 서버에 연결되었으면, 서버에게 데이터 “Hello" 전송
send(client, buf, strlen(buf), 0);
//서버로부터 메시지 수신
recvbyte = recv(client, buf, sizeof(buf), 0);
if (recvbyte < 0)
{
printf(" 메시지 수신 실패\n");
exit(1);
}
buf[recvbyte] = '\0';
printf("수신한 메시지:%s\n", buf); /* 서버로부터 수신한 메시지 출력 */
closesocket(client);
WSACleanup();
return 0;
}
#include <string.h>
#include <stdlib.h>
#include <winsock2.h>
#include <sys/types.h>
#include <NetCon.h>
#include <atlsocket.h>
#define PORT 10020 /* 접속할 서버 프로그램의 포트 번호 */
int main(int argc, char *argv[])
{
struct sockaddr_in ServerAddr; /* 접속할 서버의 주소 구조체 */
struct hostent *prthost; /* 호스트표 항목에 대한 포인터*/
SOCKET client; /* 클라이언트 소켓의 기술자 */
int port = PORT; /* 연결할 서버의 포트 번호 */
char *host = "localhost"; /* 지역 호스트의 기호 이름을 지정 */
char buf[10] = "Hello"; /* 서버에게 전달할 데이터("Hello")를 저장한 버퍼 */
int recvbyte = 0; /* 서버로부터 수신한 데이터의 길이*/
// 윈도우 운영체제에서 필요한 설정
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
return -1;
// 연결할 서버 주소 구조체의 내용을 memset 함수로 모두 0으로 초기화한 후에
// 각 필드에 필요한 값들을 설정한다.
// 따라서, 값이 설정되지 않은 필드는 0으로 초기화된다.
memset(&ServerAddr, 0, sizeof(ServerAddr));
ServerAddr.sin_family = AF_INET; /* 인터넷 주소 체계 설정 */
ServerAddr.sin_port = htons(port); /* 포트 번호 설정 */
prthost = gethostbyname(host); /* 호스트 이름에서 IP 주소 설정 */
// prthost = ;
memcpy(&ServerAddr.sin_addr, prthost->h_addr, prthost->h_length);
// 클라이언트의 소켓 생성
client = socket(AF_INET, SOCK_STREAM, 0);
if (client < 0)
{
printf("클라이언트 소켓 생성 실패\n");
exit(1);
}
//서버와의 연결 접속
if (connect(client, (struct sockaddr *)&ServerAddr, sizeof(ServerAddr)) < 0)
{
printf("서버와 연결 실패\n");
exit(1);
}
// 서버에 연결되었으면, 서버에게 데이터 “Hello" 전송
send(client, buf, strlen(buf), 0);
//서버로부터 메시지 수신
recvbyte = recv(client, buf, sizeof(buf), 0);
if (recvbyte < 0)
{
printf(" 메시지 수신 실패\n");
exit(1);
}
buf[recvbyte] = '\0';
printf("수신한 메시지:%s\n", buf); /* 서버로부터 수신한 메시지 출력 */
closesocket(client);
WSACleanup();
return 0;
}
반응형
'엔지니어 > C++' 카테고리의 다른 글
socket_test_server (0) | 2016.05.26 |
---|---|
agent server (create by sk) (0) | 2016.05.26 |
agent server makefile (create by sk) (0) | 2016.05.26 |
agent client makefile (create by sk) (0) | 2016.05.26 |
j2-agent(/etc/init.d/) (create by sk) (0) | 2016.05.26 |