--sever
// socket_server.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//
#include "stdafx.h"
#include <stdio.h>
#include <winsock2.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#pragma comment(lib, "ws2_32.lib")
#define PORT 900
char buffer[9] ;
void makeStr(char* p);
int _tmain(int argc, _TCHAR* argv[])
{
int c_socket, s_socket;
SOCKADDR_IN saddr, caddr;
int len, n;
//윈속 초기화부
WSADATA wsa;
if(WSAStartup(MAKEWORD(2,2),&wsa) != 0)
{
return -1;
}
//소켓 생성부분
s_socket = socket(PF_INET, SOCK_STREAM, 0);
//구조체 초기화 및 연결 요청을 수신할 주소 설정
memset(&saddr, 0, sizeof(saddr));
saddr.sin_addr.s_addr = htonl(INADDR_ANY) /- 모든 연결 요청에 대해 서버 응용 프로그램에서 처리한다는 의미 *-;
saddr.sin_family = AF_INET;
saddr.sin_port = htons(PORT);
//소켓을 포트에 연결하기
if(bind(s_socket, (struct sockaddr*)&saddr, sizeof(saddr))==1)
{
printf("Can not Bind\n");
return -1;
}
//커널에게 개통을 요청
if(listen(s_socket, 5) == -1)
{
printf("listen Fail\n");
return -1;
}
while(1)
{
len = sizeof(caddr);
c_socket = accept(s_socket, (struct sockaddr*) &caddr, &len); /- 연결 요청 수신부분 *-
printf("Connected Client\n");
while(1)
{
strcpy(buffer,"");
makeStr(buffer);
n= strlen(buffer);
printf("send %s \n",buffer);
send(c_socket, buffer, n, 0);
Sleep(1000);
}
}
closesocket(s_socket);
return 0;
}
void makeStr(char* p)
{
int code;
int start;
char data[9];
srand(time(NULL));
code = rand()%2;
start = rand()%5;
switch(code)
{
case 0:
strcpy(data,"H1BF");
break;
case 1:
strcpy(data,"H2BF");
break;
}
switch(start)
{
case 0:
strcat(data,"1111");
break;
case 1:
strcat(data,"1112");
break;
case 2:
strcat(data,"1113");
break;
case 3:
strcat(data,"1114");
break;
case 4:
strcat(data,"1115");
break;
case 5:
strcat(data,"1116");
break;
}
//data[9]=NULL;
strcpy(p,data);
}
-----------------------------
--client-------------
// socket_client.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//
#include "stdafx.h"
#include <stdio.h>
#include <winsock2.h>
#include <string.h>
#pragma comment(lib, "ws2_32.lib")
#define PORT 900
#define IPADDR "127.0.0.1"
char rcvBuffer[BUFSIZ];
int _tmain(int argc, _TCHAR* argv[])
{
int c_socket;
SOCKADDR_IN caddr;
int len, n;
//윈속 초기화부
WSADATA wsa;
if(WSAStartup(MAKEWORD(2,2),&wsa) != 0)
{
return -1;
}
//소켓 생성부분
c_socket = socket(PF_INET, SOCK_STREAM, 0);
//구조체 초기화 및 연결 요청을 수신할 주소 설정
memset(&caddr, 0, sizeof(caddr));
caddr.sin_addr.s_addr = inet_addr(IPADDR) /- inet_addr(IP주소) *-;
caddr.sin_family = AF_INET;
caddr.sin_port = htons(PORT);
if(connect(c_socket, (struct sockaddr *)&caddr, sizeof(caddr))==-1)
{
printf("Can not connect\n");
closesocket(c_socket);
return -1;
}
while(1)
{
if((n = recv(c_socket, rcvBuffer, sizeof(rcvBuffer), 0)) < 0)
{
return -1;
}
if(strlen(rcvBuffer)!=0)
{
rcvBuffer[n] = '\0';
printf("received Data : %s\n", rcvBuffer);
}
}
closesocket(c_socket);
return 0;
}
------------------------