当前位置: 首页 > 编程笔记 >

python Socket之客户端和服务端握手详解

刁文光
2023-03-14
本文向大家介绍python Socket之客户端和服务端握手详解,包括了python Socket之客户端和服务端握手详解的使用技巧和注意事项,需要的朋友参考一下

简单的学习下利用socket来建立客户端和服务端之间的连接并且发送数据

1. 客户端socketClient.py代码

import socket 
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
# 建立连接: 
s.connect(('127.0.0.1', 9999)) 
# 接收欢迎消息: 
print(s.recv(1024).decode('utf-8')) 
for data in [b'Michael', b'Tracy', b'Sarah']: 
 # 发送数据: 
 s.send(data) 
 print(s.recv(1024).decode('utf-8')) 
s.send(b'exit') 
s.close() 

2. 服务端serverSocket.py代码

import socket 
import threading 
import time 
# from threading import Thread 
 
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
# 监听端口: 
s.bind(('127.0.0.1', 9999)) 
s.listen(5) 
print('Waiting for connection...') 
 
def tcplink(sock, addr): 
 print('Accept new connection from %s:%s...' % addr) 
 sock.send(b'Welcome!') 
 while True: 
  data = sock.recv(1024) 
  time.sleep(1) 
  if not data or data.decode('utf-8') == 'exit': 
   break 
  sock.send(('Hello, %s!' % data.decode('utf-8')).encode('utf-8')) 
 sock.close() 
 print('Connection from %s:%s closed.' % addr) 
 
while True: 
 # 接受一个新连接: 
 sock, addr = s.accept() 
 # 创建新线程来处理TCP连接: 
 t = threading.Thread(target=tcplink, args=(sock, addr)) 
 t.start() 

3.操作过程

开两个控制台窗口,先运行服务端 python3 serverSocket.py

然后运行客户端 python3 socketClient.py

socket连接截图如下

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 我正在使用T.Rob的建议调试Websphere MQ服务器和客户机之间的SSL错误,并需要帮助理解SSL握手(SSL连接到MQ使用。NET MQ客户机SSLv3?)。 我的WMQ7.5客户机应用程序是C代码,使用密钥库(.kdb)。利用WebSphere管理员提供的CHLTAB。WMQ服务器运行Java,通道是用相互身份验证定义的。 本文指出,在SSL/TLS握手中,服务器总是发送其公共证书以响

  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 问题内容: 尝试获取网页: 获取https://www.fl.ru/:远程错误:握手失败。 如果我尝试获取另一个HTTPS页面-一切正常。 问题答案: 该服务器仅支持一些弱密码: 如果确实必须连接到该服务器,则Go会支持列表中的最后一个密码,但默认情况下不支持。使用新的tls.Config创建一个客户端,并指定所需的密码:

  • 尝试获取网页: 收到https://www.fl.ru/:远程错误:握手失败。 如果我尝试获取另一个HTTPS页面,一切都可以。

  • 当我的客户机应用程序尝试从我的安全RESTWeb服务请求资源时,我得到了粘贴在下面的错误。 我已经在这个主题上找到了这个答案,但是额外的代码似乎很极端。使用泽西岛客户端访问安全的宁静Web服务 有谁知道解决问题的更简单的方法吗? 我的项目:在服务器端,我正在使用jdbc realm的基本身份验证,这在浏览器中使用时工作正常。在客户端,我设置了用户名和密码,当我发送请求时发生错误。如果您需要代码片段

  • 问题内容: 我现在正在尝试使用两种方式的SSL握手来设置Netty,其中客户端和服务器都在其中并验证证书。 这似乎没有在SslHandler中实现。有没有人这样做?我想它将在SslHandler.handshake操作中运行并委托给javax.net.ssl.SSLEngine? 任何提示/技巧/预先存在的实现? 谢谢! 回答(stackoverflow不允许我以正常方式发布它)我发现,如果在设置