유닉스 네트워크 프로그래밍의 소켓 프로그래밍
2502 단어 인터넷
// unp.h
#ifndef _UNP_H
#define _UNP_H
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define MAXLINE 4096
#define ERR_EXIT(m) \
do{ \
perror(m); \
exit(EXIT_FAILURE); \
}while(0)
#endif
다음은 클라이언트 코드입니다.#include "unp.h"
int main()
{
int sockfd;
char sendbuff[MAXLINE];
struct sockaddr_in servaddr;
ssize_t n;
if( (sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
ERR_EXIT("socket err");
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(6666);
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
if(connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0)
ERR_EXIT("connect err");
for(; ;){
fgets(sendbuff, MAXLINE, stdin);
if( (n = write(sockfd, sendbuff, strlen(sendbuff))) < 0)
ERR_EXIT("write err");
memset(sendbuff, 0 ,sizeof(sendbuff));
if( (n = read(sockfd, sendbuff, sizeof(sendbuff))) < 0)
ERR_EXIT("read err");
fputs(sendbuff, stdout);
memset(sendbuff, 0, sizeof(sendbuff));
}
close(sockfd);
}
다음은 서버 코드입니다.#include "unp.h"
int main()
{
int listenfd, connfd;
struct sockaddr_in servaddr;
char recvbuff[MAXLINE];
ssize_t n;
if( (listenfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
ERR_EXIT("socket err");
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(6666);
servaddr.sin_addr.s_addr = INADDR_ANY;
if(bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0)
ERR_EXIT("bind err");
if(listen(listenfd, SOMAXCONN) < 0)
ERR_EXIT("listen err");
if( (connfd = accept(listenfd, (struct sockaddr*)NULL, NULL)) < 0)
ERR_EXIT("accept err");
for(; ;){
if( (n = read(connfd, recvbuff, sizeof(recvbuff))) < 0)
ERR_EXIT("read err");
recvbuff[n] = '\0';
fputs(recvbuff, stdout);
if( (n = write(connfd, recvbuff, strlen(recvbuff))) < 0)
ERR_EXIT("write err");
memset(recvbuff, 0, sizeof(recvbuff));
}
close(connfd);
close(listenfd);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
"5G"의 비즈니스 모델ICT 비즈니스는 "지금, 미국에서 일어나고 있는 일이 3~5년 후에 일본에서 일어난다""지금 중국이 가장 진행되고 있어 그것을 쫓는 일본"이라고 생각되기 쉽지만, 5G의 비즈니스는 그렇다고는 말할 수없는 상황에 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.