코스웨어/15년 스마트컨트롤러
20151201 22번 우대희 업무일지
알 수 없는 사용자
2015. 12. 2. 08:58
컴파일 설치 ARM ADS(ARM Developer Suite) 1.2
------- ARM ADS
ARM Developer Suite 라는 줄임말로 ARM 사에서 제작한 유료 C컴파일러
현재는 단종되었다고 합니다.
http://alisa2304.tistory.com/35
해당 페이지 참고하여 설치
MFC 에 Win32함수를 없애버리면 함수가 동작을 못한다
MFC를할려면 기본적으로 Win32를 배워야한다
윈도우소켓을 만들려면
if(WSAStartup(MAKEWORD(2,2),&wsaData)!= 0)
{
printf("error\r\n");
return 0;
}
위 if문을 반드시 만들어줘야한다
도스도 네트워크가 가능하다
#pragma comment(lib, "Ws2_32.lib") //비주얼에서는 자동으로 언급이된다 수동으로 할시 적어 주어야 합니다
gcc -o server server.c -lsocket 처럼 원래는 리눅스에서도 언급을 해주어야한다 요즘에는 언급을 안해도 된다
htons(): htons 유닉스것이다 저장방식이 리틀인디안인지 빅인디안인지 모르기에 저장박식을 잡아 준다
네트워크는 빅인디안을 따르기에 만들어준다
server.c 소스
#include <winsock.h> #include <stdio.h>
#pragma comment(lib, "Ws2_32.lib") //비주얼에서는 자동으로 언급이된다
#define PORT 7777 #define IP "192.168.0.202" #define MAX_PACKETLEN 512
int main() { WSADATA wsaData; SOCKET sSock; //server SOCKET cSock; //client SOCKADDR_IN sAddr; int status; int iLen; int writen; char ReadBuffer[MAX_PACKETLEN];
if(WSAStartup(MAKEWORD(2,2),&wsaData)!= 0) { printf("error\r\n"); return 0; }
sSock = socket(AF_INET, SOCK_STREAM,0); if(sSock == INVALID_SOCKET) { return 1; } /* 전역변수 아닌이상 쓰래기값이다*/ memset(&sAddr,0,sizeof(sAddr)); //sizeof에 변수를 넣던지 구조체이름을 넣어도된다
sAddr.sin_family = AF_INET; sAddr.sin_port = htons( PORT ); //htons 유닉스것이다 네트워크는 빅인디안을 따르기에 만들어준다 sAddr.sin_addr.s_addr = inet_addr(IP); status = bind(sSock,(struct sockaddr*)&sAddr, sizeof(SOCKADDR_IN));
if(status == 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(sAddr)); iLen = sizeof(SOCKADDR_IN); cSock = accept(sSock,(SOCKADDR *)&sAddr,&iLen); //구조체의크기를가지고있는 iLen if(cSock == INVALID_SOCKET) { printf("Accept Error\n"); closesocket(sSock); WSACleanup(); return 1; } printf("incoming client[%s]:[%d]\n", sAddr.sin_addr,sAddr.sin_port); iLen = recv(cSock,ReadBuffer,MAX_PACKETLEN,0); if(iLen > 0) { writen = send(cSock, ReadBuffer, iLen, 0); } else { printf("read Error \n"); } closesocket(cSock); if(0 == strcmp(ReadBuffer,"Quit")) //입력받은 것과 비교 후 종료문 {
break; } }
closesocket(sSock); WSACleanup(); return 0; }
|