1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | #include <WinSock2.h> #pragma comment(lib,"ws2_32.lib") #define BUFSIZE 1024 int senddata(int PORT, char IP[],char data[]); int main() { /* int senddata( int PORT, char IP[], char data[] ); 에러가 없으면 0 반환. 에러 발생 시 에러값 반환. (int 형) */ if (0 != senddata(80, "221.151.187.115", "GET / HTTP/1.1\nHost:www.kim82536.pe.kr\n\n")){ printf("Error!\n"); } } int senddata(int PORT,char IP[],char data[]) { WSADATA wsaData; SOCKET client; SOCKADDR_IN serveraddr; char buf[BUFSIZE]; int errorcode; WSAStartup(MAKEWORD(2, 2), &wsaData); errorcode = WSAGetLastError(); if (0 != errorcode) return errorcode; client = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); errorcode = WSAGetLastError(); if (0 != errorcode) return errorcode; serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(PORT); serveraddr.sin_addr.S_un.S_addr = inet_addr(IP); connect(client, (SOCKADDR*)&serveraddr, sizeof(serveraddr)); send(client, data, 1024, 0); memset(buf, 0, 1024); recv(client, buf, 1024, 0); printf("echo data : \n%s\n", buf); WSACleanup(); return 0; } | cs |
한번 connect 후에 send(), recv() 하는 것이 더 편하겠지만 일단 모듈형으로 하기 위해서
이렇게 짜보았다.
buf 를 전역변수로 선언해서 값을 받아오던가, 포인터를 사용해서 값을 반환해주면 될 듯 하다.
'전공 과목 시험정리 > C 프로그래밍' 카테고리의 다른 글
윈도우 C 소켓 기본 (0) | 2015.05.10 |
---|---|
C와 C++ 동시사용 (0) | 2015.05.10 |
C++ 에서의 소켓프로그래밍 (0) | 2015.04.25 |
Fate 서버 소스 (미완성) (0) | 2015.04.25 |
fork 로 프로세스 생성 후, 프로세스간 변수 공유 (0) | 2015.04.25 |