基於TCP的socket程式設計

2021-10-05 08:38:30 字數 1359 閱讀 8155

tcp客戶用connect函式來建立tcp伺服器的連線

bind函式把乙個本地位址賦予乙個套接字

listen函式

listen函式僅由tcp伺服器呼叫,它做兩件事

當socket函式建立乙個套接字時,它被假設為乙個主動套接字,listen函式把乙個未連線的套接字轉換成乙個被動套接字。

本函式第二個引數規定了核心應該為相應的套接字排隊的最大連線個數。

accept函式由tcp伺服器呼叫,用於從已完成連線佇列隊頭返回下乙個已完成連線。如果完成連線隊列為空,那麼程序被投入睡眠。

int accept(int sockfd, struct sockaddr *cliaddr,socklen_t *addrlen);

addrlen是值-結果引數。

本函式最多返回三個值;乙個即可能是新套接字描述符也可能是出錯指示的整數,客戶程序的協議位址以及該位址的大小。

pid_t fork(void);返回在子程序為0,在父程序中為子程序的id 出錯返回-1

fork呼叫一次,它卻返回兩次。它在呼叫父程序中返回一次,返回值是新派生程序的程序id號。在子程序又返回一次,返回值為0;子程序可以呼叫getppid取得父程序的id。如果父程序想要跟蹤所有子程序的程序id,那麼它必須記錄每次呼叫fork的返回值。

父程序中呼叫fork之前開啟的所有描述符在fork返回之後由子程序分享

fork的兩個典型用法

1.乙個程序建立乙個自身的副本,每個副本都可以在另乙個副本執行其他任務的同時處理各自的某個操作。

2. 乙個程序想要執行另乙個程式,首先呼叫fork建立乙個自身的副本,然後其中乙個副本呼叫exec把自身替換成新的程式。

close函式也用來關閉套接字,並終止tcp連線

int close(int sockfd);

這兩個函式的最後乙個引數都是值-結果引數,

獲取套接字的位址族

所有的客戶和伺服器都從呼叫socket開始,它返回乙個套接字描述符。客戶隨後呼叫connest,伺服器則呼叫bind,listen和accept。套接字通常使用標準close函式關閉。

基於TCP的socket程式設計

sockets 套接字 程式設計有三種,流式套接字 sock stream 資料報套接字 sock dgram 原始套接字 sock raw 基於 tcp的 socket 程式設計是採用的流式套接字。在這個程式中,將兩個工程新增到乙個工作區。要鏈結乙個 ws2 32.lib 的庫檔案。伺服器端程式設...

基於TCP的socket程式設計

基於tcp的socket程式設計的伺服器程式流程如下 1 建立套接字 socket 2 將套接字繫結到乙個本地位址和埠上 bind 3 將套接字設為監聽模式,準備接收客戶請求 listen 4 等待客戶請求到來,當請求到來後,接受連線請求,返回乙個新的對應於此次連線的套接字 accept 5 用返回...

程式設計實現基於tcp的socket程式設計

server端 public class server socket.shutdowninput 關閉輸入流 4 獲取輸出流,響應客戶端的請求 outputstream os socket.getoutputstream printwriter pw new printwriter os 包裝為列印...