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...