socket實現客戶端與服務端之間的Tcp通訊

2021-10-07 13:59:40 字數 2491 閱讀 8778

server:

1. socket(int socket_family, int socket_type, int protocol) 建立socket,返回用於監聽的套接字

2. bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen) 繫結伺服器位址結構(ip+port)

3. listen(fd, 128) 設定監聽上限

4. accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)阻塞監聽客戶端連線,sockfd為socket函式返回值,返回新的已經成功與客戶端連線的的檔案描述符

5. ssize_t read(int fd,void *buf, size_t count) 讀socket獲取客戶端資料

6. 小寫轉大寫 toupper()

7. ssize_t write(int fd, const void *buf, size_t count) //向緩衝區寫入資料

8. close();

client:

1. socket() 建立socket

2. int connect(int socketfd, const struct sockaddr *addr, socklen_t addrlen); 與伺服器建立連線

3. write() 寫資料到 socket

4. read() 讀轉換後的資料。

5. 顯示讀取結果

6. close()

htonl() 本地位元組序轉網路位元組序(ip)

htons() 本地位元組序轉網路位元組序(port)

ntohl() 網路位元組序轉本地位元組序(ip)

ntohs() 網路位元組序轉本地位元組序(port)

//點分十進位制ip位址轉換為網路位元組序

int inet_pton(int af, const void *src, char *dst, socklen_t size);

//網路位元組序轉點分十進位制ip位址

const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);

struct sockaddr_in ;

/* internet位址. */

struct in_addr ;

sockaddr_in初始化:

struct sockaddr_in addr;

addr.sin_family = af_inet/af_inet6; //ipv4或ipv6

addr.sin_port = htons(9527); //將本地位元組序轉為short型別的網路位元組序

//方法一,實際一般不這麼用

int dst;

inet_pton(af_inet, "192.127.22.45",(void *)dst);

addr.sin_addr.s_addr = dst;

//方法二

addr.sin_addr.s_addr = htonl(inaddr_any);//取出系統中有效的任意ip位址。

在實際作為accept、connect函式的引數使用時還要將sockaddr_in強轉為sockaddr型別

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define serv_port 9528

void

sys_err

(const

char

*str)

intmain

(int argc,

char

*ar**)

close

(lfd)

;close

(cfd)

;return0;

}

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define serv_port 9528

void

sys_err

(const

char

*str)

intmain

(int argc,

char

*ar**)

close

(cfd)

;return0;

}

socket 實現客戶端與服務端通訊

python內的socket已經預設實現了tcp和udp兩種傳輸協議。本文通過乙個簡單的例子記錄一下socket的簡單使用方法。實現 客戶端和服務端通過tcp協議通訊,客戶端向服務端傳送訊息,服務端接收訊息後新增 too 字串後返回給客戶端,客戶端可以主動斷開連線。服務端 import socket...

服務端 客戶端Socket通訊

服務端 using system using system.collections.generic using system.net using system.net.sockets using system.text using system.text.regularexpressions usi...

socket 服務端於客戶端

usr bin env python coding utf 8 time 2017 8 23 15 33 author mr zhang site file 服務端.py software pycharm from socket import import subprocess,struct,jso...