网络编程_tcp与dup协议简单应用
老师的博客:http://www.cnblogs.com/Eva-J/articles/8066842.html 计算机网络基础
:http://www.cnblogs.com/Eva-J/articles/8244551.html 网络编程
基于TCP协议的简单的发消息
server
import socket
from socket import SOL_SOCKET,SO_REUSEADDR
tool=socket.socket()
tool.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
tool.bind(('192.168.43.155',8891))#IP port
tool.listen()#监听连接
connect,address=tool.accept()#接受client的信息,建立三次握手
get=connect.recv(1024).decode('utf-8')#接受信息
print(get)
connect.send(bytes('you can go oher place'.encode('utf-8')))
get = connect.recv(1024).decode('utf-8')
print(get)
connect.close()
注意,当建立三次握手后,所有的操作前缀都是你拿到的那个链接,而下面的client的前缀都是自己的那个前缀
client
import socket
client=socket.socket()
client.connect(('192.168.43.155',8891))#建立三次握手
client.send(bytes('i am coming'.encode('utf-8')))#发信息
get = client.recv(1024).decode('utf-8')#接受信息
print(get)
client.send(bytes('i only say goodbye'.encode('utf-8')))
client.close()
TCP协议是,建立连接时,谁先发送消息都可以,但是注意的是,必须是一发一收,一发一收,按照顺序来。serve接受时,不必写入地址,因为tcp协议是面向
的协议
基于DUP协议
server
import socket
ip_port=('192.168.43.155',8898)
server=socket.socket(type=socket.SOCK_DGRAM)
server.bind(ip_port)
message,address=server.recvfrom(1024)
set = message.decode('utf-8')
print(set)
print('client address:',address)
server.sendto(bytes('i know you coming'.encode('utf-8')),address)
message,address=server.recvfrom(1024)
print(message.decode('utf-8'))
print('client address:',address)
server.close()
client
import socket
ip_port=('192.168.43.155',8898)
client=socket.socket(type=socket.SOCK_DGRAM)
client.sendto(bytes('i am coming'.encode('utf-8')),ip_port)
message,address=client.recvfrom(1024)
print('sever address:',address)
print(message.decode('utf-8'))
client.sendto(bytes('i am going'.encode('utf-8')),address)
client.close()
udp 协议不必遵循发一收一,但是发几条信息得收几条信息,发送信息是和接受信息时必需带上地址
网络编程_tcp与dup协议简单应用的更多相关文章
- 嵌入式linux的网络编程(1)--TCP/IP协议概述
嵌入式linux的网络编程(1)--TCP/IP协议概述 1.OSI参考模型及TCP/IP参考模型 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制.大家一定都听说过著 ...
- C#网络编程TCP通信实例程序简单设计
C#网络编程TCP通信实例程序简单设计 采用自带 TcpClient和TcpListener设计一个Tcp通信的例子 只实现了TCP通信 通信程序截图: 压力测试服务端截图: 俩个客户端链接服务端测试 ...
- 网络编程杂谈之TCP协议
TCP协议属于网络分层中的传输层,传输层作用的就是建立端口与端口的通信,而其下一层网络层的主要作用是建立"主机到主机"的通信,所以在我们日常进行网络编程时只要确定主机和端口,就能实 ...
- Android网络编程系列之HTTP协议原理总结
前言 作为搞移动开发的我们,免不了与网络交互打交道.虽然市面上很多开源库都封装的比较到位,我们实现网络访问也轻车熟路.但还是十分有必要简要了解一下其中的原理,以便做到得心应手,也是通往高级开发工程师甚 ...
- Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver
今日内容:socket网络编程 1.OSI七层协议 2.基于tcp协议的套接字通信 3.模拟ssh远程执行命令 4.tcp的粘包问题及解决方案 5.基于udp协议的套接字 ...
- 8.6 day27 网络编程 osi七层协议 Time模块补充知识 TCP协议
Time模块补充知识 date和datetime区别是什么? date 就是年月日 datetime就是年月时时分秒 以下代码为什么会报错? import json from datetime imp ...
- 网络编程之基于UDP协议的套接字编程、基于socketserver实现并发的socket
目录 基于UDP协议的套接字编程 UDP套接字简单示例 服务端 客户端 基于socketserver实现并发的socket 基于TCP协议 server类 request类 继承关系 服务端 客户端1 ...
- python 之 网络编程(基于TCP协议的套接字通信操作)
第八章网络编程 8.1 基于TCP协议的套接字通信 服务端套接字函数 s.bind() 绑定(主机,端口号)到套接字 s.listen() 开始TCP监听 s.accept() 被动接受TCP客户的连 ...
- 网络编程_TCP协议_客户端与服务端
客户端发数据到服务端 Tcp传输,客户端建立的过程. 1,创建tcp客户端socket服务.使用的是Socket对象.建议该对象一创建就明确目的地.要连接的主机. 2,如果连接建立成功,说明数据传输通 ...
随机推荐
- 源码安装zabbix_agent4.0.3
1.源码包下载地址:https://www.zabbix.com/download_sources 2.下载完后上传在任意目录用root用户创建以下脚本server_ip为服务端ip然后执行. gro ...
- asp.net core 系列 20 EF基于数据模型创建数据库
一.概述 本章使用 Entity Framework Core 构建执行基本数据访问的 ASP.NET Core MVC 应用程序.使用迁移(migrations)基于数据模型创建数据库,是一种cod ...
- Leetcode - 剑指offer 面试题29:数组中出现次数超过一半的数字及其变形(腾讯2015秋招 编程题4)
剑指offer 面试题29:数组中出现次数超过一半的数字 提交网址: http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163 ...
- 使用mpvue开发小程序教程(六)
在上一章节中,我们列举了在Vue中能用但在mpvue中不能用或需要特别注意的特性,在实际开发前了解一下还是很有必要的,可以避免浪费找错误的时间. 如果你使用过原生的小程序框架,你一定经历过或思考过怎么 ...
- 17-Flink消费Kafka写入Mysql
戳更多文章: 1-Flink入门 2-本地环境搭建&构建第一个Flink应用 3-DataSet API 4-DataSteam API 5-集群部署 6-分布式缓存 7-重启策略 8-Fli ...
- log4j2 使用纪要
简介 Apache Log4j 2 是Log4j 的升级版,在该版本实现中,日志的处理流程及效率有了显著提升. 此外新版本也合入了一些logback日志框架体系的一些改进点. 关键特性 API分离,接 ...
- 解决端口冲突问题(查询端口占用进程并kill)
1. 查看端口占用 在windows命令行窗口下执行: netstat -aon|findstr "8080" TCP 127.0.0.1:80 0.0.0.0:0 LISTENI ...
- 一文读懂Https的安全性原理、数字证书、单项认证、双项认证等
本文引用了作者Smily(博客:blog.csdn.net/qq_20521573)的文章内容,感谢无私分享. 1.前言 目前苹果公司已经强制iOS应用必须使用HTTPS协议开发(详见<苹果即将 ...
- Spring Cloud Alibaba与Spring Boot、Spring Cloud之间不得不说的版本关系
这篇博文是临时增加出来的内容,主要是由于最近连载<Spring Cloud Alibaba基础教程>系列的时候,碰到读者咨询的大量问题中存在一个比较普遍的问题:版本的选择.其实这类问题,在 ...
- Django 系列博客(十三)
Django 系列博客(十三) 前言 本篇博客介绍 Django 中的常用字段和参数. ORM 字段 AutoField int 自增列,必须填入参数 primary_key=True.当 model ...