当前位置: 首页 > news >正文

网络编程-----socket函数

1.Socket()函数:
访问底层操作系统接口的全部方法,提供服务中心类,简化网络服务器的开发;
语法:socket.socket(family([,type,proto]]])
family: 套接字家族可以是 AF_UNIX 或者 AF_INET
type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAM或SOCK_DGRAM
protocol: 一般不填默认为0.
2.实操用语(内置)方法:
服务端:
s.bind():绑定服务端ip地址码,编制端口;
s.listen():规定可链接数量,与服务器要链接的客户端是多少个;
s.accept():开启链接口,等待客户端的链接;
客户端:
s.connect():输入服务端的IP地址及服务端口,如果连接出错,返回socket.error错误;
s.connect_ex():是connect的扩展,出错时只返回错码,不会出异常;
公调用函数:
s.revc():规定一次接收tcp数据(字节)大少;
s.send():发送TCP数据(字节)对方(相互通讯};
s.sedall():完整地发送完一段TCP数据(字节),
3.实例:

#创建服务端:
import socket                                       #调用内部模块
import sys                                          #调用内部模块
server = socket.socket()
while 1:
    server.bind((socket.gethostname(),8899))        #服务端本身ip地址,设计服务端端口
    server.listen(5)                                #可以接受链接的端口
    print('已经链接客户端')
    conn ,addr = server.accept()
    print(conn,addr)                                #获取客户端的地址信息
    while 1:
        try:
	        data = conn.recv(1024)                      #获取数据时,一次接收信息字节的大小
	        print(data.decode('gbk'))
	        Tk = input('答复:')
	        if data.decode('gbk').upper() == 'Q':
	
	            conn.close()                            #与链接客户端断开
	            break
	        elif Tk.upper() == 'Q':
	            conn.send(b'stop')                      # 服务端回复客户端信息
	            conn.close()
	        else:
	            conn.send(Tk.encode('gbk'))
	        server.close()                             #关闭服务端端口
	        
         except  Exception as e:
        	break


#客户端:

import socket
import sys
clinet = socket.socket()
clinet.connect_ex((socket.gethostname(),8899))
while True:
    connent = input('请输入信息:')
    clinet.send(connent.encode('gbk'))
    if connent.upper() == 'Q':
        clinet.send(connent.encode('gbk'))
        clinet.close()
        break
    else:
        data = clinet.recv(1024)
        print(data.decode('gbk'))

相关文章:

  • SpringBoot的自动装配进阶
  • 高通平台Android 蓝牙调配置手试和册-- OPP File Transmission Failure
  • STC15单片机内部RAM讲解
  • zemax---Ray Aberration(光线光扇图)
  • Polygon zkEVM Arithmetic状态机
  • 汽车毫米波雷达测试与测量解决方案
  • 网络编程--sockaddr 与 sockaddr_in
  • HashMap底层分析
  • 《工程伦理与学术道德》之《导论》
  • VGLUT 1抗体丨SYSY VGLUT 1抗体化学性质和文献参考
  • 598. 范围求和 II (脑筋急转弯)
  • 【云存储】大容量网盘的介绍与选择
  • openEuler-22.03系统安装openGauss3.0.0 企业版过程中遇到的坑
  • Vue组件、slot介绍
  • 网络编程之POP3协议邮箱收信
  • canvas 高仿 Apple Watch 表盘
  • MySQL-事务管理(基础)
  • Spring核心 Bean的高级装配
  • tweak 支持第三方库
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 利用jquery编写加法运算验证码
  • 每天一个设计模式之命令模式
  • 如何编写一个可升级的智能合约
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 一个JAVA程序员成长之路分享
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 最简单的无缝轮播
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • #Lua:Lua调用C++生成的DLL库
  • #在 README.md 中生成项目目录结构
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (31)对象的克隆
  • (4)Elastix图像配准:3D图像
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (待修改)PyG安装步骤
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (四)模仿学习-完成后台管理页面查询
  • (五)关系数据库标准语言SQL
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .net 中viewstate的原理和使用
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .net(C#)中String.Format如何使用
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET序列化 serializable,反序列化
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题