소켓 통신
네트워크 바이트 순서
- 리틀 - 엔디안 : 높은 상위 메모리 주소, 낮은 주소 메모리가 부족합니다. (저장 인텔 아키텍처)
- 빅 - 엔디안 : 주소 높은 낮은 예금, 낮은 예금 높은 주소입니다. (전송 모드 네트워크)
#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: 转换之后的 网络字节序的地址
소켓 서버를 만들려면
- 소켓 핸들 만들기
- 바인드 () 바인드 IP + 포트
- (), 광고 모니터에 동시 접속 수를 제공한다 청취
- 차단) (동의 클라이언트 연결을 수신
- () 데이터를 판독하는 판독, 판독 데이터는 대문자 소문자 회전의 ToUpper () 필요
- 쓰기 () 작성, 값은 클라이언트에 다시 기록
- 읽기는 () 닫기) (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