簡單TCP伺服器建立

2021-10-08 02:43:41 字數 1974 閱讀 9681

簡單tcp伺服器建立

實現tcp伺服器的建立,實現迴圈與客戶端聊天,並且獲取客戶端資訊.

tcp程式設計步驟

1—建立套接字socket() == 買手機.

2—套接字繫結 bind() == 繫結手機卡.

3—監聽套接字 listen() == 等待其他人打**.

4—接受客戶端請求 accept() == 接**.

---- 進行資料的互動過程. == 通話內容.

5—關閉套接字 close() == 掛掉**.

使用的函式

int

socket

(int domain,

int type,

int protocol)

;//但是在傳入函式時要進行強轉,轉為struct sockaddr;

//struct sockaddr_in內部採用了位元組填充技術,

//所以大小和struct sockaddr 一樣.

intbind

(int sockfd,

const

struct sockaddr *addr,socklen_t addrlen);;

struct in_addr

; addrlen: 位址資訊結構體長度.

返回值:錯誤 -

1 正確 0

}int

listen

(int sockfd,

int backlog)

;int

accept

(int sockfd,

struct sockaddr *addr,

socklen_t *addrlen)

;//把ip位址轉化為用於網路傳輸的二進位制數值

intinet_aton

(const

char

*cp,

struct in_addr *inp)

;in_addr_t inet_addr

(const

char

*cp)

;//將網路傳輸的二進位制數值轉化為成點分十進位制的ip位址

char

*inet_ntoa

(struct in_addr in)

;注意: 網路通訊中資料採用大端序,

如果pc機資料處理方式為小端,就轉位元組序

主機位元組序轉網路位元組序:

htons()

: 以short方式轉換.

htonl()

: 以long方式轉換.

此s_addr型別需要的是ip的二進位制形式.

但是通常ip都是用點分十進位制來表示: 例如:

"192.168.2.4"

所以要轉化採用函式: inet_addr()

;

程式例項
#include

#include

#include

#include

#include

void

error_handle

(char

* message)

;int

main

(int argc,

const

char

*ar**)

;while(1

)char

* p =

(char*)

inet_ntoa

(clntaddr.sin_addr)

;printf

("client addrss:%s\n"

,p);

//列印客戶端ip

close

(connfd)

;close

(sockfd)

;return0;

}//錯誤處理函式

void

error_handle

(char

* message)

swoole 建立tcp伺服器

server.php 建立tcp伺服器 date 2019 1 15 serv new swoole server 127.0.0.1 9501 監聽連線進入事件 serv on connect function serv,fd 監聽資料接收事件 serv on receive function s...

簡單的TCP伺服器

介紹 winsock api 是一套供 microsoft windows 作業系統使用的套接字程式庫,它最初基於 berkeley 套接字,但是其中加入了一些 microsoft 的特殊改動。在這篇文章中,我要試著給你介紹如何使用 winsock 來進行套接字程式設計,並假設你沒有在任何作業系統上...

Web入門 建立TCP伺服器

from socket import from time import ctime host port 21567 bufsize 1024 addr host,port tcpsersock socket af inet,sock stream 建立伺服器套接字 tcpsersock.bind a...