基本TCP套接字編程

1. ?socket函數原型:

#include <sys/socket.h>
int socket(int domain, int type, int protocol);

2. bind函數原型:


#include <sys/socket.h>
int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);

參數:

?
struct sockaddr_in {sa_family_t sin_family;  /* 地址族: AF_INET */u_int16_t sin_port;      /* 按網絡字節次序的端口 */struct in_addr sin_addr; /* internet地址 */
};struct in_addr {u_int32_t s_addr;         /* 按網絡字節次序的地址 */
};

?

3. listen函數原型: 設置同時與服務器連接上的上限數(同時進行3次握手的客戶端數量)

#include <sys/socket.h>
int listen(int s, int backlog);

參數:

  • backlog:內核為相應套接字排隊的最大連接數
  • ?

4. accept函數原型:阻塞等待客戶端建立連接,成功的話,返回一個與客戶端成功連接的socket文件描述符

#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

參數:

  • sockfd:socket函數返回值
  • addr:傳出參數——成功與服務器建立連接的那個客戶端的地址結構(IP + port)
  • addrlen:傳入傳出。入:addr的大小。出:客戶端addr實際大小
  • 成功:能與服務器進行數據通信的socket對應的文件描述符

?

5. connect函數原型:

#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

參數:

  • socket函數返回值
  • addr:傳入參數——服務器地址結構
  • addrlen:服務器的地址結構大小

注意:如果不使用bind客戶端地址結構,采用隱式綁定

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385514.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385514.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385514.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oppoJava面試題,騰訊社招三面多久聯系

梳理知識點&#xff0c;是快速提升技術的關鍵 前面講過&#xff0c;快速提升自己的技術硬實力其實是有方法的。大致就是梳理知識點夯實基礎進階深入學習實戰&#xff0c;下面我會一點點跟大家剖析&#xff0c;本文干貨滿滿&#xff0c;大家仔細閱讀。 ①梳理知識必備&#xff1…

oppoJava面試!傳智播客java基礎案例教程

零基礎如何學習Java&#xff1f; 首先&#xff0c;你要明白一點&#xff0c;Java入門不難&#xff01; 無論你是從事哪個行業&#xff0c;興趣一定是最好的老師&#xff0c;也是你學習的動力。 學習方式1&#xff1a;自學 自學模式其實我個人不建議絕大部分的人選擇&#x…

Redis高級項目實戰!北京java編程入門培訓

Dubbo面試專題 JVM面試專題 Java并發面試專題 Kafka面試專題 MongDB面試專題 MyBatis面試專題 MySQL面試專題 Netty面試專題 RabbitMQ面試專題 Redis面試專題 Spring Cloud面試專題 SpringBoot面試專題 zookeeper面試專題 最后 給大家送一個小福利 資料都是免費分享的&#xf…

poll函數

#include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout);參數&#xff1a; fds&#xff1a;監聽的文件描述符【數組】 struct pllfd {int fd; 待監聽的文件描述符short events; 待監聽的文件描述符對應的監聽事件short revents; 傳入時&…

Redis高級項目實戰,java配置jdk環境時

Spring Security觀后感——手繪思維腦(供參考) Spring Security手繪思維腦圖 手繪的思維導圖&#xff0c;是我自己根據自身的情況讀完這套阿里出品的Spring Security王者晉級文檔之后所繪的&#xff0c;相當于是一個知識的總結與梳理&#xff0c;我將其分為***“核心組件”與“…

select函數(一)

int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 參數&#xff1a; nfds&#xff1a;監控的文件描述符集里最大文件描述符加1&#xff0c;因為此參數會告訴內核檢測前多少個文件文件描述符readfs&#xff1a;監控有讀…

Redis高級項目實戰,阿里P7級別面試經驗總結

第一次壓測 慘不忍睹&#xff0c;平均響應時間150ms&#xff0c;而且在這次壓測過程中還發現其它的問題&#xff0c;后臺報錯&#xff0c;經查是OpenSearch每秒查詢次數限制 優化代碼與配置 1、修改OpenSearch配置&#xff0c;并且將壓測環境中的OpenSearch連接地址改為內網地…

Makefile用法鏈接

Makefile的編寫及四個特殊符號的意義、$、$^、$ <font face"字體" size"字號" color"顏色">這里是需要突出顯示的內容</font> <font color#0099ff size12 face"黑體">黑體</font>

Redis高頻面試筆記:java版本號比較算法

1.三重心智模型 先給大家科普一個概念&#xff0c;“三重心智模型”。 認知科學家斯坦諾維奇&#xff0c;將人的心智模式&#xff0c;分成了三個部分。 第一層是自主心智&#xff0c;自主心智是我們通過進化與內隱學習獲得。比如&#xff0c;我們看到蛇就會害怕&#xff0c;情…

Redis高頻面試筆記:mysql8.0新特性

一、服務發布簡介 分布式系統架構下&#xff0c;服務發布是一件很麻煩的事情&#xff0c;特別是在構建自動發布流程和灰度測試的策略兩個核心方面。通常情況下如果不涉及數據層面的灰度流程&#xff0c;服務可以灰度上線&#xff0c;或者滾動上線&#xff0c;這兩種方式很常用…

Makefile (二)

一、line1的源碼 line1.h #ifndef _LINE_1_H #define _LINE_1_H void line1_print(const char *strMsg); #endifline1.cpp #include "line1.h" #include <stdio.h> void line1_print(const char *strMsg) {printf("This is line1 print %s.\r\n",st…

RocketMQ避坑指南:springcloud教程權威指南

1. Java 堆空間 **發生頻率&#xff1a;**5顆星 造成原因 無法在 Java 堆中分配對象 吞吐量增加 應用程序無意中保存了對象引用&#xff0c;對象無法被 GC 回收 應用程序過度使用 finalizer。finalizer 對象不能被 GC 立刻回收。finalizer 由結束隊列服務的守護線程調用&a…

IO多路復用之epoll

一、epoll函數族 1. 函數epoll_creat&#xff1a; 該函數生成一個epoll專用的文件描述符 #include <sys/epoll.h> int epoll_creae(int size); //epoll上能關注的最大描述符數 2. epoll_ctl&#xff1a;用于控制某個epoll文件描述符事件&#xff0c;可以注冊、修改、刪…

26. 刪除排序數組中的重復項

給定一個排序數組&#xff0c;你需要在原地刪除重復出現的元素&#xff0c;使得每個元素只出現一次&#xff0c;返回移除后數組的新長度。 不要使用額外的數組空間&#xff0c;你必須在原地修改輸入數組并在使用 O(1) 額外空間的條件下完成。 示例 1: 給定數組 nums [1,1,2], …

Leetcode 31. Pow(x, n) 解題報告

class Solution {public:double myPow(double x, int n) {double res 1.0;for(int i n; i ! 0; i / 2){if(i % 2 ! 0)res * x;x * x;}return n < 0 ? 1 / res : res;} };

572. 另一個樹的子樹

給定兩個非空二叉樹 s 和 t&#xff0c;檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹。s 的一個子樹包括 s 的一個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。 示例 1: 給定的樹 s: 3/ \4 5/ \1 2給定的樹 t&#xff1a; 4 / \1 2返回 true&#x…

二叉樹中序遍歷的三種方法

二叉樹是一種重要的數據結構&#xff0c;對二叉樹的遍歷也很重要。這里簡單介紹三種二叉樹中序遍歷的方法。二叉樹的中序遍歷就是首先遍歷左子樹&#xff0c;然后訪問當前節點&#xff0c;最后遍歷右子樹。對于下面的二叉樹&#xff0c;中序遍歷結果如下&#xff1a; 結果&…

reverse函數:反轉容器內容

reverse函數可以反轉一個容器中的內容&#xff0c;包含在<algorithm>庫中。 1、函數原型 reverse函數等同于下面的代碼&#xff1a; template <class BidirectionalIterator> void reverse (BidirectionalIterator first, BidirectionalIterator last) {while ((…

服務器框架

一、Reactor模式 Reactor模式&#xff0c;它要求主線程&#xff08;I/O處理單元&#xff09;只負責監聽文件描述符上是否有事件發生&#xff0c;有的話就立即將該事件通知工作線程&#xff08;邏輯單元&#xff09;。除此之外&#xff0c;主線程&#xff08;I/O處理單元&#…

使用CreateFile讀寫文件

微軟提供了強大的文件讀寫操作的編程接口&#xff0c;所以可以通過調用API函數實現文件的讀寫操作。這里通過CreateFile函數來實現。 要對文件進行讀寫操作&#xff0c;首先要調用CreateFile函數打開或者創建文件&#xff0c;函數具體格式如下&#xff1a; HANDLE CreateFile(…