网络编程---scoket_Tcp

需要存在一个服务端进行数据的接收与回复,需要存在一个客户端进行数据的发送与接收

Server端

import socket
sk = socket.socket()
sk.bind(('127.0.0.1',8898))  #把地址绑定到套接字
sk.listen()          #监听链接
conn,addr = sk.accept() #接受客户端链接
ret = conn.recv(1024)  #接收客户端信息
print(ret)       #打印客户端信息
conn.send(b'hi')        #向客户端发送信息
conn.close()       #关闭客户端套接字
sk.close()        #关闭服务器套接字(可选)

client端

import socket
sk = socket.socket()           # 创建客户套接字
sk.connect(('127.0.0.1',8898))    # 尝试连接服务器
sk.send(b'hello!')
ret = sk.recv(1024)         # 对话(发送/接收)
print(ret)
sk.close()            # 关闭客户套接字

在重启服务端可能会遇到的问题:

解决方法:(即我们每次写的时候都加上这段话)

#加入一条socket配置,重用ip和端口
import socket
from socket import SOL_SOCKET,SO_REUSEADDR
sk = socket.socket()
sk.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #就是它,在bind前加
sk.bind(('127.0.0.1',8898))  #把地址绑定到套接字
sk.listen()          #监听链接
conn,addr = sk.accept() #接受客户端链接
ret = conn.recv(1024)   #接收客户端信息
print(ret)              #打印客户端信息
conn.send(b'hi')        #向客户端发送信息
conn.close()       #关闭客户端套接字
sk.close()        #关闭服务器套接字(可选)

例子:

# server 端
import socker
from socker import SOL_SOCKET,SO_REUSEADDR
sk = socket.socket()
sk.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
sk.bink(('127.0.0.1',8080))
sk.listen()
conn,addr = sk.accept()

ret = conn.recv(1024).decode() # 将接收到的bytes类型进行转换 # 接收客户发送过来的数据
print(ret)
conn.send(bytes('收到',encolding = 'utf-8')) # 必须传bytes数据类型 # 向客户端回复数据

conn.close()
sk.close()
# client 端
import
socket sk = socket.socket() sk.connect(('127.0.0.1',8080)) # 连接服务端的IP和端口 sk.send(bytes('你好',encoding = 'utf-8')) # 向服务端发送数据 ret = sk.recv(1024).decode() # 接收服务端回复的数据 print(ret) sk.close() # 关闭会话

更多例子:如多次发送、隔10秒打印时间

posted on 2019-05-02 13:52  Jerry-Wang  阅读(102)  评论(0)    收藏  举报