C ++는 TCP / UDP 네트워크 프로그래밍 프로세스를 구현하고, 기본 함수는 기술 된 방법을 사용하여

소켓 통신

네트워크 바이트 순서

  • 리틀 - 엔디안 : 높은 상위 메모리 주소, 낮은 주소 메모리가 부족합니다. (저장 인텔 아키텍처)
  • 빅 - 엔디안 : 주소 높은 낮은 예금, 낮은 예금 높은 주소입니다. (전송 모드 네트워크)
#include <arpa/inet.h>

// 将本地转网络,转IP  转192.168.1.11->string->atoi->int->htonl->网络字节序,可以使用 int inet_pton(); 进行直接转换
uint32_t  htonl(uint32_t hostlong); 
// 本地转网络,转port
uint16_t  htons(uint16_t hostshort);
// 网络转本地,转ip
uint32_t ntohl(uint32_t netlong);
// 网络转本地,转port
uint16_t ntohs(uint16_t netshort);
// string转网络字节
int inet_pton(int af, const char * restrict src, void * restrict dst);
// af: AF_INET, AF_INET6
// src: ip地址,点分十进制
// dst: 转换之后的 网络字节序的地址

소켓 서버를 만들려면

  1. 소켓 핸들 만들기
  2. 바인드 () 바인드 IP + 포트
  3. (), 광고 모니터에 동시 접속 수를 제공한다 청취
  4. 차단) (동의 클라이언트 연결을 수신
  5. () 데이터를 판독하는 판독, 판독 데이터는 대문자 소문자 회전의 ToUpper () 필요
  6. 쓰기 () 작성, 값은 클라이언트에 다시 기록
  7. 읽기는 () 닫기) (0 닫으시기의 가까운 읽을 때

소켓 기능 분석

소켓 만들기

INT 소켓 (INT 도메인, INT 유형, INT 프로토콜);

  • 도메인 : 선택한 IP 주소 프로토콜, AF_INET, AF_INET6
  • 입력 : 유형 SOCK_STREAM (TCP / 스트림 형태), SOCK_DGRAM (UDP / 패킷 양식)
  • 프로토콜 : 표현 계약 번호 0

반환 값 :

  • 성공적인 복귀 0, 새로운 소켓 파일 설명

  • 실패 : -1

#include <sys/socket.h>

fd = socket(AF_INET, SOCK_STREAM, 0)

SOCKADDR 어드레스 구조 분석

#include <sys/socket.h>
#include <arpa/inet.h>

struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(9527);
int dst;
inet_pton(AF_INET, "192.168.22.45", (void *)&dst);
addr.sin_addr.s_addr = dst;
addr.sin_addr.s_addr = htonl(INADDR_ANY) // INADDR_ANY 取出系统有效的任意ip地址,是二进制类型
bind(fd, (struct sockaddr *)&addr, size);

바인드 기능 분석

바인딩 기능

바인딩 (FD (구조체 SOCKADDR *) ADDR, 사이즈);

  • FD : 소켓 파일 객체
  • (구조체 SOCKADDR *) 주소 : 어드레스 구조 SOCKADDR 저장 캐스트 전달 될 SOCKADDR
  • 크기 : 요지로 크기를 사용하여 얻을 수 SIZEOF

기능 분석을 듣고

모니터 기능

INT 듣고 (INT는 INT 백 로그를 sockfd와);

  • sockfd와 : 소켓
  • 잔고 : 연결의 최대 수 (128)의 최대
  • 반환 값 : 0, -1 오류

기능 분석을 수용

혼잡 기능

int accept(int sockfd, struct sockaddr addr, socklen_t addrlen);

  • sockfd : socket 函数返回值
  • addr : 传出参数, 成功返回服务器的ip和端口号
  • addrlen : 传入传出。入: addr的大小。 出:客户端addr的实际大小

返回值:

  • 成功: 大于0,返回成功的套接字文件描述符
  • 失败:返回-1

connect函数分析

int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 使用现有的socket与服务器建立连接

  • sockfd: socket 函数返回值
  • addr: 传入服务器的地址结构
  • 返回值:
    • 成功:0
    • 失败:-1

추천

출처www.cnblogs.com/fandx/p/12150672.html