Python基於socket實現簡單套接字通訊

2021-09-25 10:15:11 字數 3146 閱讀 8848

客戶端的connect對應的服務端的accept 三次握手

服務端既可以發訊息也可以收訊息

客戶端

#_*_coding:utf-8_*_

import socket

#1、先有手機 socket型別(網路通訊) 流式就是tcp協議

phone=socket.socket(socket.af_inet,socket.sock_stream)

#print(phone)

#2、撥號 連線 客戶端的connect對應的服務端的accept

phone.connect(('127.0.0.1',8081))

#3、發,收訊息

phone.send('hello'.encode('utf-8'))

data=phone.recv(1024)

print(data)

#4、關閉

phone.close()

服務端

#_*_coding:utf-8_*_

import socket

#1、買手機

phone=socket.socket(socket.af_inet,socket.sock_stream)

# print(phone)

#2、繫結手機卡

phone.bind(('127.0.0.1',8081)) #0-65535:0-1024給作業系統使用

#3、開機 監聽

phone.listen(5)

#4、等**鏈結 等待接受客戶端過來的資訊

print('starting...')

#過來的是元祖

conn,client_addr=phone.accept()

#5、**撥通連線到客戶端的,就要收,發訊息

data=conn.recv(1024) #1、單位:bytes 2、1024代表最大接收1024個bytes 位元組

print('客戶端的資料',data)

conn.send(data.upper())

#6、掛**

conn.close()

#7、關機

phone.close()

客戶端

#_*_coding:utf-8_*_

import socket

phone=socket.socket(socket.af_inet,socket.sock_stream)

phone.connect(('127.0.0.1',8083))

while true:

msg=input('>>: ').strip()

phone.send(msg.encode('utf-8'))

data=phone.recv(1024)

print(data)

phone.close()

服務端

#_*_coding:utf-8_*_

import socket

phone=socket.socket(socket.af_inet,socket.sock_stream)

#繫結phone.bind(('127.0.0.1',8083)) #0-65535:0-1024給作業系統使用

#監聽phone.listen(5)

print('starting...')

conn,client_addr=phone.accept()

print(client_addr)

while true: #通訊迴圈

#收客戶端資訊

data=conn.recv(1024)

print('客戶端的資料',data)

#發給客戶端

conn.send(data.upper())

conn.close()

phone.close()

服務端

#_*_coding:utf-8_*_

import socket

phone=socket.socket(socket.af_inet,socket.sock_stream)

#機器原來存在8083的埠,重複使用

phone.setsockopt(socket.sol_socket,socket.so_reuseaddr,1)

phone.bind(('127.0.0.1',8083)) #0-65535:0-1024給作業系統使用

phone.listen(5)

print('starting...')

conn,client_addr=phone.accept()

print(client_addr)

while true: #通訊迴圈

try:

data=conn.recv(1024)

if not data:break #適用於linux作業系統

print('客戶端的資料',data)

conn.send(data.upper())

except connectionreseterror: #適用於windows作業系統

break

conn.close()

phone.close()

客戶端

#_*_coding:utf-8_*_

import socket

phone=socket.socket(socket.af_inet,socket.sock_stream)

phone.connect(('127.0.0.1',8083))

while true:

msg=input('>>: ').strip() #msg=''

#不能為空就繼續

if not msg:continue

#發資料

phone.send(msg.encode('utf-8')) #phone.send(b'')

# print('has send')

#接受服務端發來的資訊

data=phone.recv(1024)

# print('has recv')

print(data.decode('utf-8'))

phone.close()

Linux下基於C C 的Socket程式設計例項

socket程式設計例項 例項中的伺服器通過socket連線向客戶端傳送字串 hello,you are connected 只要在伺服器上執行該伺服器軟體,在客戶端執行客戶軟體,客戶端就會收到該字串。該伺服器軟體 如下 include include include include include...

基於Python的Socket程式設計

socket基礎 socket的英文原義是 孔 或 插座 最初作為bsd unix的程序通訊機制,也被稱作 套接字 用於描述ip位址和埠,是乙個通訊鏈的控制代碼,可用來實現不同虛擬機器或不同計算機之間的通訊。在internet上的主機一般執行了多個服務軟體,同時提供幾種服務。每種服務都開啟乙個soc...

基於TCP和UDP的socket通訊(C 實現)

首先談談tcp socket tcp簡單的三次握手過程如圖,syn synchronize sequence numbers 同步標誌 ack acknowledgement number 確認標誌 圖中可以看出,三次握手的過程是在c的connect 和s的bind listen accept 函式...