网络编程
ip地址
端口和端口号
Tcp的介绍
socket的介绍
import socket
if __name__ == '__main__':
# 创建tcp客户端套接字
# AF_INET: ipv4地址类型
# SOCK_STREAM: tcp传输协议类型
socket_client_sub = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
# 和服务端套接字建立连接
socket_client_sub.connect(("192.168.98.1", 8080))
# 编写数据
send_content = "hello, i`m client!!"
# 对字符串进程编码成为二进制数据
send_data = send_content.encode()
# 发送数据到服务端
socket_client_sub.send(send_data)
# 接收服务端的数据
re_data = socket_client_sub.recv(1024)
print(re_data.decode())
# 关闭套接字
socket_client_sub.close()
ubuntu安装网络调试工具deb
import socket
if __name__ == '__main__':
# 创建套接字
socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口号
# 端口号复用
socket_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
socket_server.bind(("", 9090))
# 监听等待最大的连接数
socket_server.listen(128)
# 接受数据
# 每次当客户端和服务端建立连接成功都会返回一个新的套接字
# 这个套接字只负责建立请求连接,不负责收发数据
new_client, ip_port = socket_server.accept()
print(ip_port)
data = new_client.recv(1024)
recv_content = data.decode('utf-8')
print(recv_content)
send_content = "问题处理中..."
new_client.send(send_content.encode('utf-8'))
new_client.close()
# 关闭链接
socket_server.close()
import socket
import threading
def accept(ip_port, new_client):
print(ip_port)
while True:
data = new_client.recv(1024)
if data:
recv_content = data.decode('utf-8')
print('接受到客户端消息:', ip_port, recv_content)
send_content = "问题处理中..."
new_client.send(send_content.encode('utf-8'))
else:
print('客户端', ip_port, '下线!')
break
new_client.close()
if __name__ == '__main__':
# 创建套接字
socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口号
# 端口号复用
socket_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
socket_server.bind(("", 9090))
# 监听等待最大的连接数
socket_server.listen(128)
while True:
# 接受数据
# 每次当客户端和服务端建立连接成功都会返回一个新的套接字
# 这个套接字只负责建立请求连接,不负责收发数据
new_client, ip_port = socket_server.accept()
client_thread = threading.Thread(target=accept, args=(ip_port, new_client))
client_thread.daemon = True
client_thread.start()
# 关闭链接
socket_server.close()