Linux에서 Socket 프로그래밍의 간단한 예
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define SERVPORT 3333
#define BACKLOG 10
main()
{
int sockfd,client_fd ,sin_size;
struct sockaddr_in my_addr;
struct sockaddr_in remote_addr;
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("socket error"); exit(1);
}
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(SERVPORT);
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1)
{
perror("bind error");
exit(1);
}
if (listen(sockfd, BACKLOG) == -1)
{
perror("listen error");
exit(1);
}
while(1) {
sin_size = sizeof(struct sockaddr_in);
if ((client_fd = accept(sockfd, (struct sockaddr *)&remote_addr, &sin_size)) == -1)
{
perror("accept error");
continue;
}
printf("received a connection from %s
", inet_ntoa(remote_addr.sin_addr));
if (!fork())
{
time_t timep;
time (&timep);
char temp[100]="Hello,you are connected!the time now is:";
char * t=ctime(&timep);
strcat(temp,t);
if (send(client_fd, temp, 100, 0) == -1)
perror("send error");
close(client_fd);
exit(0);
}
close(client_fd);
}
}
설명: 서버에서 이 서비스를 먼저 시작하고 클라이언트가 방문할 수 있습니다.텔넷 서버 IP 3333(포트) 사용 가능
수정 버전:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define SERVPORT 3333
#define BACKLOG 10
main()
{
int sockfd,client_fd ,sin_size;
struct sockaddr_in my_addr;
struct sockaddr_in remote_addr;
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("socket error"); exit(1);
}
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(SERVPORT);
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1)
{
perror("bind error");
exit(1);
}
if (listen(sockfd, BACKLOG) == -1)
{
perror("listen error");
exit(1);
}
while(1) {
sin_size = sizeof(struct sockaddr_in);
if ((client_fd = accept(sockfd, (struct sockaddr *)&remote_addr, &sin_size)) == -1)
{
perror("accept error");
continue;
}
printf("received a connection from %s
", inet_ntoa(remote_addr.sin_addr));
if (!fork())
{
time_t timep;
time (&timep);
char temp[1024]="\r
\r
:";
char * t=ctime(&timep);
strcat(temp,t);
strcat(temp,"");
send(client_fd,"HTTP/1.1 200 OK\r
Server:HWS\r
Content-Length:1024\r
Content-Type:text/html;charset=utf-8\r
", 90, 0);
send(client_fd, temp, 1024, 0);
close(client_fd);
exit(0);
}
close(client_fd);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
React 구성 요소에서 소켓 이벤트 리스너가 여러 번 실행됩니다.기본적이지만 종종 간과되는 사이드 프로젝트를 하면서 배운 것이 있습니다. 이 프로젝트에는 단순히 두 가지 주요 부분이 포함되어 있습니다. 프런트 엔드: 반응 및 재료 UI 백엔드: Express, Typescript...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.