socket 程式設計

2022-08-03 00:48:11 字數 2524 閱讀 3973

1 什麼是 socket?

2 socket又稱"

套接字",應用程式通常通過"

套接字"34

socket()函式

5python 中,我們用 socket()函式來建立套接字,語法格式如下:67

socket.socket([family[, type[, proto]]])8引數

9family: 套接字家族可以使af_unix或者af_inet

10type: 套接字型別可以根據是面向連線的還是非連線分為sock_stream或sock_dgram

11protocol: 一般不填預設為0.

1213

1415

import socket

16from

datetime import datetime

17# 服務端

18 sk=socket.socket(socket.af_inet,socket.sock_stream)

19 host=socket.gethostname() #獲取主機名稱

20 port=9999

21# 繫結位址(host,port)到套接字, 在af_inet下,以元組(host,port)的形式表示位址。

22sk.bind((host,port))

23# 開始tcp監聽。backlog指定在拒絕連線之前,作業系統可以掛起的最大連線數量。該值至少為1,大部分應用程式設為5就可以了。

24 sk.listen(5)25

while

true:

26# 被動接受tcp客戶端連線, (阻塞式) 等待連線的到來

27 ck,addr=sk.accept()

28 print('

'%str(addr),datetime.now())

29 msg='

'+'\r\n'30

# send() 傳送tcp資料,將string中的資料傳送到連線的套接字。返回值是要傳送的位元組數量,該數量可能小於string的位元組大小。

31 ck.send(msg.encode('

utf-8'))

32ck.close()

3334

3536

37import socket

38import sys

39from

datetime import datetime

4041

# 客戶端

42 s=socket.socket(socket.af_inet,socket.sock_stream)

43 host=socket.gethostname()

44 port=9999

45# 主動初始化tcp伺服器連線。一般address的格式為元組(hostname,port),如果連線出錯,返回socket.error錯誤。

46s.connect((host,port))

47# 接收tcp資料,資料以字串形式返回,bufsize指定要接收的最大資料量。flag提供有關訊息的其他資訊,通常可以忽略。

48 msg=s.recv(1024)49

s.close()

50 print(msg.decode('

utf-8

'),datetime.now())

5152

5354

5556

57import socket

5859 s=socket.socket(socket.af_inet,socket.sock_dgram)

60 s.bind(('

localhost

',10021

))61 print('

udp連線')

62while

true:

63 data,addr=s.recvfrom(1024

)64 print('

收到資料%s:%s.

'%addr)

65 s.sendto(data.decode('

utf-8

').upper().encode(),addr)

6667

6869

import socket

7071 s=socket.socket(socket.af_inet,socket.sock_dgram)

72 addr=('

localhost

',10021)73

while

true:

74 data=input('

請輸入要處理的資料:')

75if not data or data=='

quit':

76break

77s.sendto(data.encode(),addr)

78 recvdata,addr=s.recvfrom(1024

)79 print(recvdata.decode('

utf-8'))

80 s.close()

socket程式設計

一直以為serversocket accept之後客戶端才能發資訊,實驗後得出如下結論 1 serversocket沒有accept時,client是可以傳送資訊到server端的。2 serversocket accept之後,正在處理訊息時,client也是可以傳送資訊到server端。如果se...

Socket程式設計

對tcp ip udp socket程式設計這些詞你不會很陌生吧?隨著網路技術的發展,這些詞充斥著我們的耳朵。那麼我想問 1.什麼是tcp ip udp?2.socket在 呢?3.socket是什麼呢?4.你會使用它們嗎?什麼是tcp ip udp?tcp ip transmission cont...

socket程式設計

建立socket 建立乙個 socket,它可用於在基於 tcp ip 的網路 如 internet 上通訊。socket s new socket addressfamily.internetwork,sockettype.stream,protocoltype.tcp 若要使用 udp 而不是 ...