Socket语法及相关:

Socket Familile(地址簇)

socket.AF_UNIX     unix本机进程间通信

socket.AF_INET     IPV4     经常用的还是这里

socket.AF_INET6   IPV6

socketc传输是bytes格式

Socket Types

socket.SOCK_STREAM          #tcp协议用到

socket.SOCK_DGRAM            #udp协议用到

socket.SOCK_RAM                #原始套接字,普通的套接字无法处理TCMP.TGMP等网络报文,而SOCK_RAM也可以处理特殊的TPV4报文

Socket方法

使用方法:server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

把方法指定到变量server

server.bind(address):将套接字绑定到地址, address地址格式取决于地址族,在AF_INET下,以元组(host.prot)的形式表示地址

server.listen(backlog):开始监听传入连接 backlog指定在拒绝连接之前,可以挂起最大连接数量,

            这里backlog等于5,表示内核已经接到了连接请求,这个值不能无限大,运维要在内核中维护连接队列

server.setblocking(bool)  : 是否阻塞,如果设置False,那么accept和recv时,一旦无数据,则报错

server.accept() :接受连接并返回,  这里有2个参数 (conn,address),其中conn是新的套接字对象,可以用来接受和发送数据, address是客户端的地址

client.connect(address) :这里是客户端连接服务端,一般address的格式是元祖(hostname,prot),如果连接错误,就返回socket,error错误

client.connect_ex(address) : 同上,只不过 会有返回值,连接成功时返回0,连接错误时返回编码 如:10061

server.close()   : 关闭套接字

server.recv(1024) : 接受套接字的数据,数据以字符串形式返回, (也就是接受客户端的套接字)

server.send(string)  :将string中的数据发送到连接的套接字,返回值是要发送的字节数量

  注释:这里个人理解,就是将数据发送到连接的套接字放到缓冲区。缓冲区溢满 就发送。 为了优化网络传输效率 减少网络I/O 收一次应该不能超过10K

server.send(string): 字面意思上就可以得知,是一次性返回所有值,成功返回None,失败则抛出异常

server.sentdo(string,address)   # 将数据发送到套接字,address是形式为(ipaddr,port)的元组,指定远程地址。返回值是发送的字节数。该函数主要用于UDP协议。

server.settimeout(timeout) : 设置套接字操作的超时期,timeout是浮点数,单位是秒,

server.getpeername():返回连接套接字的远程地址,通常是元祖(hostanme,prot)

server.getsocketname():返回套接字自己的地址,通常是元祖(hostanme,prot)

server.sendifle():发送文件

 import socket

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

 server.bind(('0.0.0.0',8070))

 server.listen(5)
print('-----开始建立连接-----')
conn,client_addr = server.accept()
print(conn,client_addr) #打印连接信息 while True:
data = conn.recv(1024)
print('客户端给我发的消息',data)
conn.send(b'got!!!!!') #

sever

 import socket

 client = socket.socket()

 client.connect(('localhost',8070))

 while True:
msg = input('>>').strip()
if len(msg) == 0 :continue
client.send(msg.encode())#
data = client.recv(1024)
print('服务器给客户端返回的消息',data)

client

SocketServer

SockertServer :其实内部就是对socket进行了封装,socketserver可以实现多并发

server端

import socketserver

class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self): while True:
self.data = self.request.recv(1024).strip()
print(self.client_address[0])
print(self.data)
self.request.sendall(self.data.upper()) #给客户端返回 if __name__ == "__main__":
HOST,PROT = "localhost",9000 server = socketserver.ThreadingTCPServer((HOST,PROT),MyTCPHandler) server.serve_forever()

server端只需要修改ThreadingTCPServer  即可实现多并发的功能

client端

import socket

client = socket.socket()

client.connect(('localhost',9000))

while True:
choire = input(">>>").strip()
if len(choire) == 0 :continue
client.send(choire.encode())
recv = client.recv(1024)
print('recv:',recv.decode())

socket编程知识的更多相关文章

  1. Socket编程知识必学

    端口号常识:    端口号被从1 开始分配.    通常端口号超出255 的部分被本地主机保留为私有用途.    1到255 之间的号码被用于远程应用程序所请求的进程和网络服务.    每个网络通信循 ...

  2. PHP socket编程需要了解的一些基本知识

    前面讲到了 fsockopen 的各种情况,其中涉及了很多其它知识,比如chunked分段传输,Keep-Alive,HTTP头字段等额外的知识,如果对这些知识一知半解,会影响对 PHP 的 sock ...

  3. 你得学会并且学得会的Socket编程基础知识

    这一篇文章,我将图文并茂地介绍Socket编程的基础知识,我相信,如果你按照步骤做完实验,一定可以对Socket编程有更好地理解. 本文源代码,可以通过这里下载 http://files.cnblog ...

  4. Linux下socket编程基本知识

    本文档主要讲解了Linux下socket编程的一些基本知识,主要包括套接字和字节序的概念,以及一些常用的结构体和函数. 本文是在网易云课堂学习过程中的记录,这个老师讲得很不错,推荐大家围观. Linu ...

  5. Linux下的C Socket编程 -- 简介与client端的处理

    Linux下的C Socket编程(一) 介绍 Socket是进程间通信的方式之一,是进程间的通信.这里说的进程并不一定是在同一台机器上也有可能是通过网络连接的不同机器上.只要他们之间建立起了sock ...

  6. python网络编程-socket编程

     一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...

  7. [转]C语言SOCKET编程指南

    1.介绍 Socket编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措?等 ...

  8. C语言SOCKET编程指南

    1.介绍 Socket 编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措? ...

  9. 揭开Socket编程的面纱

    对TCP/IP.UDP.Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵.那么我想问: 1. 什么是TCP/IP.UDP? 2. Socket在哪里呢? 3. Sock ...

随机推荐

  1. SharePoint 2013 Word 转换PDF服务介绍及示例

    前言:在SharePoint使用过程中,经常会发现将文档进行格式转换的需求,之前,看到SharePoint 2013有将PPT转换PDF文档的服务,后来,才发现SharePoint 2010开始,就有 ...

  2. sharepoint 相关<httpHandlers>

    <add verb="GET,POST,HEAD,(GETSOURCE),(HEADSOURCE),(POSTSOURCE)" path="*.doc,*.docx ...

  3. 【代码笔记】iOS-水波效果

    一,效果图. 二,工程图. 三,代码. ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIVie ...

  4. iOS json解析的几种方法 NSJSONSerialization,JSONKit,SBJson ,TouchJson

    相关的第三方类库大家可以去github上下载 1.NSJSONSerialization 具体代码如下 : - (void)viewDidLoad { [super viewDidLoad]; NSD ...

  5. xp

    微软MSDN Windows XP Professional下载 Windows XP Professional 简体中文 (最原始版本,无SP)[505.63MB] 文件名:CN_WINXP_PRO ...

  6. Nginx搭建反向代理服务器过程详解

    一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从 ...

  7. ORA-04063: view "SYS.DBA_REGISTRY" has errors

    测试环境做了RMAN还原(从10.2.0.4.0 32bit 还原到 10.2.0.4.0 64bit)后,查询dba_registry系统视图时报如下错误 SQL> select  comp_ ...

  8. 《java JDK7 学习笔记》之对象封装

    1.构造函数实现对象初始化流程的封装.方法封装了操作对象的流程.java中还可以使用private封装对象私有数据成员.封装的目的主要就是隐藏对象细节,将对象当做黑箱子进行操作. 2.在java命名规 ...

  9. ASP.NET MVC Razor

    Razor是MVC3中才有的新的视图引擎.我们知道,在ASP.NET中,ASPX的视图引擎依靠<%和%>来调用C#指令.而MVC3以后有了一套新的使用@标记的Razor语法,使用起来更灵活 ...

  10. 3-4 linux 用户及权限管理

    1. 安全上下文(secure context) 取决于资源权限和进程权限 分为三种:r:读,w:写,x:执行 每一类用户都有三个权限 文件: r:可读,可以使用类似cat等命令来查看文件内容 w:可 ...