Python_网络编程_socket()

什么是 Socket?

Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。

详细资料查看菜鸟教程http://www.runoob.com/python3/python3-socket.html

案例1 - 实现连接:

1.1服务端

# -*- coding: UTF-8 -*-
# Filename : Python_网络编程_服务器端.py

#引入模块
import socket,sys

#创建socket对象
serversocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  #socket内的两个参数分别是:IPV4、TCP

# 获取本地主机名
host = socket.gethostname()
port = 9999  #注:这里是自定义的,尽量不要用4000以内的端口

# 绑定端口
serversocket.bind((host, port))

# 设置最大连接数,超过后排队
serversocket.listen(5)

print("服务器已经开启,可以连接...")
while True:
    # 建立客户端连接
    clientsocket,addr = serversocket.accept()      

    print("连接地址: %s" % str(addr))

    msg=‘欢迎访问!‘+ "\r\n"
    clientsocket.send(msg.encode(‘utf-8‘))
    clientsocket.close()

1.2客户端

# 导入 socket、sys 模块
import socket
import sys

# 创建 socket 对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

# 获取本地主机名
host = socket.gethostname() 

# 设置端口好
port = 9999

# 连接服务,指定主机和端口
s.connect((host, port))

# 接收小于 1024 字节的数据
msg = s.recv(1024)

s.close()

print (msg.decode(‘utf-8‘))

案例2 - 实现双向信息传递:

2.1服务器端

# -*- coding:utf8 -*-

"""
备注:这是服务器
"""
import socket,sys  # 导入socket模块

sk = socket.socket()  # 创建socket对象
sk.bind(("127.0.0.1", 8888))  # 绑定端口,“127.0.0.1”代表本机地址,8888为设置链接的端口地址
sk.listen(5)  # 设置监听,最多可有5个客户端进行排队
print("等待客户连接中……")
while True:     #准备循环执行以下步骤
    conn, addr = sk.accept()  # 阻塞状态,被动等待客户端的连接
    print(conn)  # conn可以理解客户端的socket对象
    print(addr)  # addr为客户端的端口地址
    # (‘127.0.0.1‘, 40966)
    accept_data = conn.recv(1024)  # conn.recv()接收客户端的内容,接收到的是bytes类型数据,通常最大是1024个字节
    if  accept_data:  #‘如果能正常接收到客户端传来数据,就...’即:不为空
        accept_data2 = accept_data.decode("utf-8")  # str(data,encoding="utf8")用“utf8”进行解码
        if accept_data2==‘exit‘:   #如果客户端传来的是“exit”就执行。。。
            sys.exit()
        else:
            print("".join(("接收内容:", accept_data2, "    客户端口:", str(addr[1]))))
            send_data = input("输入发送内容:")  #给客户端发送内容
            conn.sendall(bytes(send_data, encoding="utf8"))  # 发送内容必须为bytes类型数据,bytes(data, encoding="utf8")用“utf8”格式进行编码
conn.close()
sys.close()

2.2客户端:

# -*- coding:utf8 -*-
#修改接口,和server4链接
#修改为多次运行  while True
‘‘‘
备注:这是客户端;当在客户端输入“exit”时服务端断开
‘‘‘

import socket
while True:
    obj = socket.socket()   #注 括号内默认“socket.AF_INET,socket.SOCK_STREAM”,是IPV4 和 TCP协议
    obj.connect(("127.0.0.1",8888))   #声明链接方式,ip 和 端口
    send_data = input("输入发送内容:")  #输入传输内容(字符串格式)
    obj.sendall(bytes(send_data, encoding="utf8")) #转换为字节码格式并发送给服务器
    ret = str(obj.recv(1024),encoding="utf-8")  #接收到(服务器传来的)字节码格式的内容,转为字符串格式
    print(ret)    #输出

原文地址:https://www.cnblogs.com/hellangels333/p/8167590.html

时间: 2024-08-06 15:51:55

Python_网络编程_socket()的相关文章

【vc】14_网络编程_socket编程

1.计算机网络基本知识 最简单的网络程序如图: 提示:IP地址就相当于一个公司的总机号码,端口号就相当于分机号码.在打电话时,拨通总机后,还需要转到分机上. (1)协议 ·为进行网络中的数据交换(通信)而建立的规则.标准或约定(=语义+语法+规则): ·不同层具有各自不同的协议: (2)网路的状况 ·多种通信媒介---有线.无线··· ·不同种类的设备---通用.专用··· ·不同的操作系统---UNIX.Windows··· ·不同的应用环境---固定.移动··· ·不同的业务种类---分时.

python_网络编程

网络ISO(国际标准化组织)--->网络体系结构标准(OSI模型)OSI: 网络信息传输比较复杂需要很多功能协同-->将功能分开,降低耦合度,让每个模块完成一定的功能-->将这些模块按照一定的顺 序进行组合,完成功能,条理清晰.       按照规定功能,顺序排序的体系结构就叫做OSI模型OSI七层模型:    1.应用层:        1.提供用户服务,例如处理应用程序,文件传输,数据管理    2.表示层        1.做数据的转换和压缩,解压,加密等    3.会话层    

Python_网络编程udp-飞秋自动攻击

# 模拟一个接收数据import socketimport time def auto_hack(udp_socket, recv_msg, revc_ip, revc_port=2425): # 发送数据 while True: print('-' * 65) # 测试 # udp_socket.sendto(recv_msg.encode("utf-8"), (revc_ip, revc_port)) udp_socket.sendto(('1:123456:hades:hades

C#_Socket网络编程实现的简单局域网内即时聊天,发送文件,抖动窗口。

最近接触了C#Socket网络编程,试着做了试试(*^__^*) 实现多个客户端和服务端互相发送消息 发送文件抖动窗口功能 服务端: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Net; using Syste

C#网络编程技术FastSocket实战项目演练

一.FastSocket课程介绍 .NET框架虽然微软提供了socket通信的类库,但是还有很多事情要自己处理,比如TCP协议需要处理分包.组包.粘包.维护连接列表等,UDP协议需要处理丢包.乱序,而且对于多连接并发,还要自己处理多线程等等.本期分享课程阿笨给大家带来的是来源于github开源Socket通信中间件:FastSocket,目的就是把大家从繁琐的网络编程技术中彻底地解放和释放出来. 阿笨只想安安静静的学习下网络编程技术Socket后,将学习的成果直接灵活的运用到自己的实际项目中去.

网络编程 -- RPC实现原理 -- RPC -- 迭代版本V1 -- 本地方法调用

网络编程 -- RPC实现原理 -- 目录 啦啦啦 V2--RPC -- 本地方法调用:不通过网络 入门 1. RPCObjectProxy rpcObjectProxy = new RPCObjectProxy(new LocalRPCClient()); : 绑定目标对象 2. IUserService userService = (IUserService) rpcObjectProxy.create(IUserService.class); :返回代理类 3. List<User> u

C#网络程序设计(1)网络编程常识与C#常用特性

    网络程序设计能够帮我们了解联网应用的底层通信原理!     (1)网络编程常识: 1)什么是网络编程 只有主要实现进程(线程)相互通信和基本的网络应用原理性(协议)功能的程序,才能算是真正的网络编程. 2)网络编程的层次 现实中的互联网是按照"TCP/IP分层协议栈"的体系结构构建的,因此程序员必须搞清楚自己要做的是哪个层次上的编程工作. TCP/IP协议体系的实现情况: 其中,网络接口层已经被大多数计算机生产厂家集成在了主板上,也就是经常所说的网卡(NIC).windows操

9. 网络编程:

网络编程: 端口: 物理端口: 逻辑端口:用于标识进程的逻辑地址,不同进程的标识:有效端口:0~65535,其中0~1024系统使用或保留端口. java 中ip对象:InetAddress. import java.net.*; class  IPDemo{ public static void main(String[] args) throws UnknownHostException{ //通过名称(ip字符串or主机名)来获取一个ip对象. InetAddress ip = InetA

物联网网络编程、Web编程综述

本文是基于嵌入式物联网研发工程师的视觉对网络编程和web编程进行阐述.对于专注J2EE后端服务开发的童鞋们来说,这篇文章可能稍显简单.但是网络编程和web编程对于绝大部分嵌入式物联网工程师来说是一块真空领域. 的确,物联网研发应该以团队协作分工的方式进行,所以有嵌入式设备端.网关.web前端.APP.后端开发等专属岗位.作为系统架构师,自然需要掌握各种岗位的关键技术.作为嵌入式工程师,掌握网络编程.web编程,能够极大地拓展自己的视野和架构思维,能够主动地对系统的各种协议和应用场景提出优化的见解