網路程式設計分為。tcp和udp,tcp為可靠連線,udp為不可靠連線。僅用**來展示。
import socket
import threading
client = socket.socket(socket.af_inet, socket.sock_stream)
#元組第乙個元素為客戶端要連線的伺服器的ip位址,第二個引數為伺服器的埠號
client.connect(("10.0.122.158", 8080))
# 建立接收執行緒
def run1(c):
while true:
data = c.recv(1024).decode("utf-8")
print("伺服器說:" + data)
th1 = threading.thread(target=run1, args=(client,))
th1.start()
def run2(c):
while true:
# 456#你真壞
data = input("請輸入要傳送給伺服器的訊息:")
data = "talk#" + data
c.send(data.encode("utf-8"))
th2 = threading.thread(target=run2, args=(client,))
th2.start()
client.send("register#123#sunck".encode("utf-8"))
th1.join()
th2.join()
import socket
import threading
from person import person
usersdict = {}
# 1、建立socket
# af_inet:表示使用ipv4
# sock_stream:表示tcp協議
server = socket.socket(socket.af_inet, socket.sock_stream)
#2、繫結
# 引數為乙個元組,元組第乙個元素為本機ip,第二元素為埠號,使用8000以上的值,最大使用到65535
server.bind(("10.0.122.158", 8080))
#3、監聽,設定最多連線數
server.listen(50)
def run(clientsocket, clientaddr):
while true:
# register#123#sunck
# talk#456#sunck nice
data = clientsocket.recv(1024).decode("utf-8")
#解析資料
arr = data.split("#")
if arr[0] == "register":
per = person(clientsocket, arr[1], arr[2])
usersdict[arr[1]] = per
elif arr[0] == "talk":
#找到當前使用者的使用者名稱
name = none
for account, per in usersdict.items():
if per.clientsocket is clientsocket:
name = per.name
break
#找到好友
per = usersdict.get(arr[1])
friendscoket = per.clientsocket
# 給好友傳送訊息
# sunck說:你真帥
friendscoket.send((name+":"+arr[2]).encode("utf-8"))
#4、等待客戶端的鏈結
while true:
print("等待鏈結……")
#客戶端連線成功返回客戶端的socket和客戶端的ip位址
clientsocket, clientaddr = server.accept()
print(clientaddr, "客戶鏈結成功")
#建立執行緒互動
th = threading.thread(target=run, args=(clientsocket, clientaddr))
th.start()
class person(object):
def __init__(self, clientsocket, account, name):
self.clientsocket = clientsocket
self.account = account
self.name = name
import socket
client = socket.socket(socket.af_inet, socket.sock_dgram)
while true:
data = input("輸入要傳送的資訊:")
client.sendto(data.encode("utf-8"), ("10.0.122.158", 8080))
以下方式不建議使用
client = socket.socket(socket.af_inet, socket.sock_dgram)
client.connect(("10.0.122.158", 8081))
while true:
data = input("輸入要傳送的資訊:")
client.send(data.encode("utf-8"))
# tcp是建立可靠連線,並且通訊雙方都可以以流的形式傳送資料。相對tcp,udp則是面向無連線的協議
# 使用udp協議時,不需要建立連線,只需要知道對方的ip位址和埠號,就可以直接傳送資料報,但是能不能到達就不知道了
# 雖然udp傳輸資料不可靠,但是它的優點是和tcp相比較,速度快,對於不要求可靠到達的資料,可以使用udp,廣播型別的軟體經常使用
import socket
server = socket.socket(socket.af_inet, socket.sock_dgram)
server.bind(("10.0.122.158", 8081))
while true:
data, addr = server.recvfrom(1024)
print("來自", addr, "的訊息:", data.decode("utf-8"))
python網路程式設計 TCP網路程式設計
tcp程式設計 客戶端 import socket 1 套接字 tcp socket socket.socket socket.af inet,socket.sock stream 2 建立鏈結 tcp socket.connect 172.27.35.1 8080 3 傳送資訊 tcp socke...
python 網路程式設計
今天晚上學習了一下python的網路程式設計,實現了client向server傳送資料,server反饋資訊 python 3.3 版本 server from socket import class tcpserver object def init self,serverport self.se...
python網路程式設計
網路通訊是計算機之間的程序之間的通訊。tcp程式設計 tcp連線建立是雙向通道,客戶端與服務端都可以給對方傳送資料。建立tcp連線時,主動發起連線的叫客戶端,被動響應連線的叫服務端。建立乙個tcp的socket連線 用socket family,type 建立套接字獲得socket物件。family...