/***윈도우소켓***/
Server.c
#include <winsock.h>
#include<stdio.h>
#define PORT 7755
#define IP "192.168.0.207"
#define MAX_PACKETLEN 512
#pragma comment(lib, "Wsock32.lib")
int main()
{
WSADATA wsaData;
SOCKET sSock;
SOCKET cSock;
SOCKADDR_IN sAddr;
int iRet;
int iLen;
int Writen;
char ReadBuffer[MAX_PACKETLEN];
if(0 != WSAStartup( MAKEWORD(2, 2), &wsaData ))
{
//int WSAStartup( WORD wVersionRequested, WSADATA* lpWSAData)
printf("error\r\n");
return 0;
}
sSock = socket(AF_INET, SOCK_STREAM, 0);
if(sSock == INVALID_SOCKET)
{
return 1;
}
memset( &sAddr, 0, sizeof(SOCKADDR_IN));
sAddr.sin_family = AF_INET;
sAddr.sin_port = htons( PORT );
sAddr.sin_addr.S_un.S_addr = inet_addr(IP);
iRet = bind( sSock, (SOCKADDR_IN*)&sAddr, sizeof( SOCKADDR_IN ) ); //바인드 시키고난 다음엔 구조체느 필요 없음여
if( iRet == SOCKET_ERROR)
{
printf("Bind Error\n");
return 0;
}
if( SOCKET_ERROR == listen( sSock, 5 ))
{
printf("listen Error\n");
return 0;
}
while(1)
{
memset( &sAddr, 0, sizeof(SOCKADDR_IN));
iLen = sizeof(SOCKADDR_IN);
cSock = accept( sSock, (SOCKADDR_IN*)&sAddr, &iLen );
if(cSock == INVALID_SOCKET)
{
printf("Accept Error\n");
closesocket(sSock);
WSACleanup();
return 1;
}
printf("incoming Client [%s]:[%d]\n", inet_ntoa(sAddr.sin_addr), ntohs(sAddr.sin_port));
iLen = recv( cSock, ReadBuffer, MAX_PACKETLEN,0 );
if( iLen > 0 )
{
Writen = send( cSock, ReadBuffer, iLen, 0 );
}
else
{
printf("recv Error\n");
}
closesocket(cSock);
if(0 == strcmp(ReadBuffer, "quit") )
{
break;
}
}
closesocket( sSock );
WSACleanup();
return 0;
}
Client.c
#include <winsock.h>
#include <stdio.h>
#pragma comment(lib, "Ws2_32.lib")
#define PORT 5551
#define MAXLEN 1024
int main(int argc, char **argv)
{
SOCKET sSock;
SOCKET cSock;
SOCKET sockfd;
int iLen;
WSADATA wsaData;
char buf[MAXLEN];
char rbuf[MAXLEN];
SOCKADDR_IN addr;
if (argc != 2)
{
printf("Usage : %s [ip address]\n", argv[0]);
return 1;
}
if (WSAStartup(MAKEWORD(2,2), &wsaData) != NO_ERROR)
{
return 1;
}
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
return 1;
}
memset((void *)&addr, 0, sizeof(SOCKADDR_IN));
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.S_un.S_addr = inet_addr(argv[1]);
if (connect(sockfd, (struct sockaddr *)&addr, sizeof(addr)) == SOCKET_ERROR)
{
return 1;
}
while (1)
{
printf("> ");
fgets(buf, MAXLEN - 1, stdin);
if (strncmp(buf, "quit\n", 5) == 0)
{
break;
}
send(sockfd, (void *)buf, strlen(buf), 0);
memset(rbuf, 0x00, MAXLEN);
recv(sockfd, (void *)buf, MAXLEN, 0);
printf("s -> %s\n", buf);
}
closesocket(sockfd);
WSACleanup();
return 0;
}
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20151130 윤재희 WinAPI #11. winsock을 사용한 서버/클라이언트 프로그램 (5) | 2015.11.30 |
---|---|
20151130 - 권오민 - ARM ASSEMBLY 3일차/WinSock 1일차 (5) | 2015.11.30 |
20151130 엄민웅 -WinSock 1일차. (4) | 2015.11.30 |
20151130 업무일지 -여지윤- winsock (5) | 2015.11.30 |
20151130 수업 / winsock_1 - 남수진 (5) | 2015.11.30 |
20151128_김태현_ARM 어셈블리2일차 (7) | 2015.11.30 |
20151127 - 강동조 개인업무일지 ARM2일차 (6) | 2015.11.30 |
20151127_박서연_일일업무보고서_ ARM Assembly(2) (8) | 2015.11.30 |