客戶端的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 函式...