가장 간단한 UDP 통신
2559 단어 네트워크 프로그래밍 깊이 연구네트워크 프로그래밍
서버:
#include "stdafx.h"
#include "stdio.h"
#include "Winsock2.h"
#include "iostream"
#include "string"
#pragma comment(lib,"WS2_32.lib")
#define OK_STR "OK"
void main()
{
int version_a = 1;
int version_b = 1;
WORD versionRequest = MAKEWORD(version_a, version_b);
WSAData wsaData;
int err = WSAStartup(versionRequest, &wsaData);
if (err != 0)
{
printf("ERROR!");
return;
}
if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1)
{
printf("WRONG WINSOCK VERSION!");
WSACleanup();
return;
}
SOCKET socServer = socket(AF_INET, SOCK_DGRAM, 0);
SOCKADDR_IN addr_Srv;
addr_Srv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addr_Srv.sin_family = AF_INET;
addr_Srv.sin_port = htons(28080);
bind(socServer, (SOCKADDR*)&addr_Srv, sizeof(SOCKADDR));
SOCKADDR_IN addr_Clt;
char recvBuf[100];
int fromlen = sizeof(SOCKADDR);
while (true)
{
recvfrom(socServer, recvBuf, 100, 0, (SOCKADDR*)&addr_Clt, &fromlen);
std::cout << recvBuf << ":" << addr_Clt.sin_port << std::endl;
sendto(socServer, OK_STR, strlen(OK_STR) + 1, 0, (SOCKADDR*)&addr_Clt, sizeof(SOCKADDR));
}
closesocket(socServer);
WSACleanup();
}
클라이언트:
#include "stdafx.h"
#include "Winsock2.h"
#include "iostream"
#include "stdio.h"
#pragma comment(lib, "ws2_32.lib")
void main()
{
int version_a = 1;
int version_b = 1;
WORD versionRequest = MAKEWORD(version_a, version_b);
WSAData wsaData;
int error = WSAStartup(versionRequest, &wsaData);
if (error != 0)
{
printf("ERROR!");
return;
}
if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1)
{
printf("WRONG WINSOCK VERSION!");
WSACleanup();
return;
}
char requestStr[100];
SOCKET socClient = socket(AF_INET, SOCK_DGRAM, 0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = inet_addr("47.94.155.26");//47.94.155.26192.168.1.117
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(28080);
char cRecvBuf[100];
while (true)
{
std::cin >> requestStr;
sendto(socClient, requestStr, strlen(requestStr) + 1, 0, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
recv(socClient, cRecvBuf, strlen(cRecvBuf) + 1, 0);
std::cout << cRecvBuf << std::endl;
}
closesocket(socClient);
WSACleanup();
// return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
네트워크 프로그래밍01 네트워크 프로그래밍과 소켓의 이해네트워크 프로그래밍이란 네트워크로 연결된 서로 다른 두 컴퓨터가 데이터를 주고 받게 하는 것 어떻게 연결?? 소켓(Socket)을 이용! 소켓이란? 그렇다면 어떻게 연결?? 데이터를 받는, 주는 소켓이 필요함 이 소...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.