UNIX Socket UDP 코드
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
// UDP -Client
int main(int argc, char* argv[])
{
if (argc < 2)
{
printf("Please input something!\r
");
exit(1);
}
// UDP , SOCK_DGRAM, SOCK_STREAM
int sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP/*TCP 0*/);
if (sock < 0)
{
printf(" !\r
");
exit(1);
}
// Send to
struct sockaddr_in toAddr;
memset(&toAddr, 0, sizeof(toAddr));
toAddr.sin_family = AF_INET;
toAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
toAddr.sin_port = htons(4000);
// Start to send to
if (sendto(sock, argv[1], strlen(argv[1]), 0, (struct sockaddr*)&toAddr, sizeof(toAddr)) != strlen(argv[1]))
{
printf("sendto() !,\r
");
close(sock);
exit(1);
}
// Receive form
struct sockaddr_in fromAddr;
char recvBuffer[128] = {0};
unsigned int fromLen = sizeof(fromAddr);
if( recvfrom(sock, recvBuffer, 128, 0, (struct sockaddr*)&fromAddr, &fromLen) < 0)
{
printf("recvfrom() !,\r
");
close(sock);
exit(1);
}
//
printf("recvfrom()result: %s\r
", recvBuffer);
close(sock);
return 0;
}
서비스 단말기
// UDP Server
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
int main()
{
// Create UDP socket
int sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (sock < 0)
{
printf("Create socket faild\r
");
exit(1);
}
// Bind socket and the client of send link request
struct sockaddr_in fromAddr;
memset(&fromAddr, 0, sizeof(fromAddr));
fromAddr.sin_family = AF_INET;
fromAddr.sin_addr.s_addr = htonl(INADDR_ANY);
fromAddr.sin_port = htons(4000);
if (bind(sock, (struct sockaddr*)&fromAddr, sizeof(fromAddr)) < 0)
{
printf("Bind socket faild!\r
");
close(sock);
exit(1);
}
struct sockaddr_in toAddr;
char recvBuffer[128] = {0};
int recvLen = -1;
unsigned int addrLen = sizeof(toAddr);
while(1)
{
if ((recvLen = recvfrom(sock, recvBuffer, 128, 0, (struct sockaddr*)&toAddr, &addrLen)) < 0)
{
printf("Receive message faild!\r
");
close(sock);
exit(1);
}
if (recvLen > 0)
{
printf("Recive message:%s\r
", recvBuffer);
}
if (sendto(sock, recvBuffer, recvLen, 0, (struct sockaddr*)&toAddr, sizeof(toAddr)) != recvLen)
{
printf("sendto faild\r
");
close(sock);
exit(1);
}
}
close(sock);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LINUX 시리즈(1부)UNIX는 1969년 AT&T에서 개발한 운영 체제입니다. UNIX는 다중 사용자, 다중 프로세스 운영 체제입니다. 기본적으로 사용 가능한 두 가지 기본 UNIX 버전이 있습니다. 대부분의 UNIX 버전은 이러한 버...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.