TCP程序流程及服务器客户端


 

Tcp服务器创建:

import socket

 

# 服务器的端口号

PORT = 9000

 

# 创建套接字socket对象,用于进行通讯

# scoket.SOCK_STREAM 表明使用tcp协议,流式协议

# 监听socket

server_sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

 

# 为服务器的socket绑定一个固定的地址,ip和端口,元祖

address = ("", PORT)

server_sock.bind(address)

 

# 让服务器开启监听,可以收到客户端的连接请求

#listen参数表示监听队列的大小,最多能同时处理三次握手的客户端数量

server_sock.listen(128)

 

# 接受客户端的连接请求,与客户端完成三次握手

# accept函数是阻塞,如果当前没有客户端发起连接,则会阻塞等待直到有客户端发起连接

# new_sock是一个新的socket对象,用来跟这个连接的客户端进行一对一数据传输使用

# client_addr是建立连接的客户端的地址,ip和端口  元祖

new_sock, client_addr = server_sock.accept()

 

# print("客户端 %s 已经建立了连接"% str(client_addr))

print("客户端 %s 已经建立了连接" % (client_addr,))

 

# 接收客户端的数据

recv_data = new_sock.recv(1024)

 

print("接收到了客户端 %s 传来的数据: %s" % (client_addr, recv_data.decode()))

 

# 向客户端发送数据

 

msg = input("请输入要传给客户端的数据:")

 

new_sock.send(msg.encode())

 

# 如果没有数据再传给客户端,可以关闭连接

new_sock.close()

 

# 如果不想再接收新的客户端的连接请求,可以关闭server_sock

server_sock.close()

测试:

我们暂时还没有写tcp客户端,可以用nc命令来作为客户端进行测试。

# nc 服务器的IP 服务器的端口
nc 127.0.0.1 8000

 

TCP客户端创建:

import socket

 

# 创建socket对象,用于通信

client_sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

 

# 对于客户端,可以不用绑定一个固定地址,使用操作系统分配的即可

 

# 向服务器发起连接请求, 并完成三次握手

server_addr = ("127.0.0.1", 9000)

client_sock.connect(server_addr)

 

# 向服务器发送数据

msg = input("请输入要发送的数据:")

client_sock.send(msg.encode())

 

# 接收服务器传回来的数据

recv_data = client_sock.recv(1024)

print("收到了由服务器传回的数据:%s" % recv_data.decode())

 

# 如果客户端不想再次发送数据,可以关闭连接

client_sock.close()

 

测试:

可以用我们刚才写的服务器程序,也可用nc命令进行测试

# -l参数表示服务器监听
# nc -l 绑定的服务器ip 端口
nc -l 127.0.0.1 8000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1576. 替换所有的问号

文章目录1. 题目2. 解题1. 题目 给你一个仅包含小写英文字母和 ? 字符的字符串 s, 请你将所有的 ? 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。 注意:你 不能 修改非 ‘?’ 字符。 题目测试用例保证 除 ‘?’ 字符…

tcp十种状态

CLOSED:表示关闭状态(初始状态)。 LISTEN:该状态表示服务器端的某个SOCKET处于监听状态,可以接受连接。 SYN_SENT:这个状态与SYN_RCVD遥相呼应,当客户端SOCKET执行CONNECT连接时,它首…

TCP的2MSL问题

2MSL (Maximum SegmentLifetime) TIME_WAIT状态的存在有两个理由: 让4次挥手关闭流程更加可靠;4次挥手的最后一个ACK是是由主动关闭方发送出去的,若这个ACK丢失,被动关闭方会再次发一个FIN过来。若主动关闭方能够保持一个2MSL的TI…

LeetCode 1577. 数的平方等于两数乘积的方法数(双指针)

文章目录1. 题目2. 解题1. 题目 给你两个整数数组 nums1 和 nums2 ,请你返回根据以下规则形成的三元组的数目(类型 1 和类型 2 ): 类型 1:三元组 (i, j, k) ,如果 nums1[i]2 nums2[j] * nums2[k] 其中 0…

LeetCode 1578. 避免重复字母的最小删除成本

文章目录1. 题目2. 解题1. 题目 给你一个字符串 s 和一个整数数组 cost ,其中 cost[i] 是从 s 中删除字符 i 的代价。 返回使字符串任意相邻两个字母不相同的最小删除成本。 请注意,删除一个字符后,删除其他字符的成本不会改变。 示例 1&…

hdu2709 Sumsets 递推

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid2709 感觉很经典的一道递推题 自己想了有半天的时间了。。。。比较弱。。。。 思路: 设f[n]表示和为n的组合数; 那么 当n为奇数时,很简单,相当于在f[n-1]的每一个…

python入门字符串

python 字符串str, ‘’, ‘’ ‘’, ‘’’ ‘’’;python没有字符,只有字符串hh 切片 字符串不可以修改,修改的话,类似于tuple, 修改的话, 只可以整体修改 tuple 也是可这样, 确切的说只是修改了指针…

阿里云 超级码力在线编程大赛初赛 第4场 题目3. from start to end

文章目录1. 题目2. 解题1. 题目 样例1: 输入: "abcd" "bcda" 输出: true样例2: 输入: "abcd" "abdc" 输出: false来源:https://tianchi.aliyun.com/oj…

Codeforces Round #697 (Div.3) A~G解题报告与解法证明

题目大体概括 A #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std;typedef long long LL; const int N 500; LL a[N]; int sz; bool Check(LL n) {for (int i 0; i < sz; i ){if (n a[i])…

python网络编辑 socket篇

Python之路&#xff1a; socket篇 Socket 网络上的两个程序通过一个双向的通信连接实现数据的交换&#xff0c;这个连接的一端称为一个socket&#xff0c;作为BSD UNIX的进程通信机制&#xff0c;通常也称做“套接字” &#xff0c;是一个通信链的句柄&#xff0c;实现不同程序…

Codeforces Round #698 (Div. 2) A-E解题报告与解法证明

Codeforces Round #698 (Div. 2) A-E解题报告与解法证明 题目解法总体概括 A Nezzar and Colorful Balls #include <bits/stdc.h> using namespace std;const int N 110; int a[N], f[N];int main() {int t; cin >> t;while (t -- ){static int n;scanf("%…

python开始之路—基础中的基础

python之路&#xff1a; 基础篇 一、Python 1、python是怎么来的 是在1989年吉多范罗苏姆&#xff0c;在圣诞节的时候闲着无聊自己用C语言开发的&#xff0c;一个脚本解释程序&#xff0c;作为ABC语言的一种继承。 2、有哪些公司在用 Youtube、Dropbox、BT、Quor…

第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛(同步赛)解题报告

第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛&#xff08;同步赛&#xff09; 题目总结 A题 切蛋糕 题目信息 解题思路 如果我们将 1/k展开到二进制的形式&#xff0c;那么就可以计算出 需要 多少块1/(2^i) 蛋糕&#xff0c;因此就可以创建出分割的方案&#xff0c;最后进行…

02.改善深层神经网络:超参数调试、正则化以及优化 W2.优化算法

文章目录1. Mini-batch 梯度下降2. 理解 mini-batch 梯度下降3. 指数加权平均数4. 理解指数加权平均数5. 指数加权平均的偏差修正6. 动量Momentum梯度下降法7. RMSprop8. Adam 优化算法9. 学习率衰减10. 局部最优的问题作业参考&#xff1a; 吴恩达视频课 深度学习笔记 1. Min…

PowerDesigner建数据库模型增加自定义扩展属性

PowerDesigner自7.x新增加一个特性&#xff0c;就是允许用户通过扩展模型的方式扩展模型的属性,但到底怎用一直搞不清楚&#xff0e;今天和同事商量准备直接在程序的Metadata信息实现上直接使用pdm时&#xff0c;我们需要对其进行扩展&#xff0c;因此又碰到这个问题&#xff0…

python初级进阶篇

python之路&#xff1a;进阶篇 一、作用域 在Python 2.0及之前的版本中&#xff0c;Python只支持3种作用域&#xff0c;即局部作用域&#xff0c;全局作用域&#xff0c;内置作用域&#xff1b;在Python 2.2中&#xff0c;Python正式引入了一种新的作用域 --- 嵌套作用域&#…

Educational Codeforces Round 103 (Rated for Div. 2)A~E解题报告

Educational Codeforces Round 103 (Rated for Div. 2) A. K-divisible Sum 原题信息 解题思路 AC代码 #include <bits/stdc.h> using namespace std;typedef long long LL; const int N 100010;int main() {int t; cin >> t;while (t -- ){static LL n, k;sc…

LeetCode 967. 连续差相同的数字(BFS/DFS)

文章目录1. 题目2. 解题2.1 DFS2.2 BFS1. 题目 返回所有长度为 N 且满足其每两个连续位上的数字之间的差的绝对值为 K 的非负整数。 请注意&#xff0c;除了数字 0 本身之外&#xff0c;答案中的每个数字都不能有前导零。 例如&#xff0c;01 因为有一个前导零&#xff0c;所…

android中的简单animation(三)accelerate(加速),decelerate(减速),anticipate,overshoot,bounce...

animation_3.xml: 1 <?xml version"1.0" encoding"utf-8"?>2 <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"3 android:orientation"vertical"4 android:padding"10dip"5 …

02.改善深层神经网络:超参数调试、正则化以及优化 W2.优化算法(作业:优化方法)

文章目录1. 梯度下降2. mini-Batch 梯度下降3. 动量4. Adam5. 不同优化算法下的模型5.1 Mini-batch梯度下降5.2 带动量的Mini-batch梯度下降5.3 带Adam的Mini-batch梯度下降5.4 对比总结测试题&#xff1a;参考博文 笔记&#xff1a;02.改善深层神经网络&#xff1a;超参数调试…