python 编写server的步骤:
1、第一步是创建socket对象。调用socket构造函数。如:
socket = socket.socket( family, type )
family参数代表地址家族,可为AF_INET或AF_UNIX。AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的进程间通信。
type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字)。
2、第二步是将socket绑定到指定地址。这是通过socket对象的bind方法来实现的:
socket.bind( address )
由AF_INET所创建的套接字,address地址必须是一个双元素元组,格式是(host,port)。host代表主机,port代表端口号。如果端口号正在使用、主机名不正确或端口已被保留,bind方法将引发socket.error异常。
3、第三步是使用socket套接字的listen方法接收连接请求。
socket.listen( backlog )
backlog指定最多允许多少个客户连接到服务器。它的值至少为1。收到连接请求后,这些请求需要排队,如果队列满,就拒绝请求。
4、第四步是服务器套接字通过socket的accept方法等待客户请求一个连接。
connection, address = socket.accept()
调 用accept方法时,socket会时入“waiting”状态。客户请求连接时,方法建立连接并返回服务器。accept方法返回一个含有两个元素的 元组(connection,address)。第一个元素connection是新的socket对象,服务器必须通过它与客户通信;第二个元素 address是客户的Internet地址。
5、第五步是处理阶段,服务器和客户端通过send和recv方法通信(传输 数据)。服务器调用send,并采用字符串形式向客户发送信息。send方法返回已发送的字符个数。服务器使用recv方法从客户接收信息。调用recv 时,服务器必须指定一个整数,它对应于可通过本次方法调用来接收的最大数据量。recv方法在接收数据时会进入“blocked”状态,最后返回一个字符 串,用它表示收到的数据。如果发送的数据量超过了recv所允许的,数据会被截短。多余的数据将缓冲于接收端。以后调用recv时,多余的数据会从缓冲区 删除(以及自上次调用recv以来,客户可能发送的其它任何数据)。
6、传输结束,服务器调用socket的close方法关闭连接。

python编写client的步骤:
1、创建一个socket以连接服务器:socket = socket.socket( family, type )
2、使用socket的connect方法连接服务器。对于AF_INET家族,连接格式如下:
socket.connect( (host,port) )
host代表服务器主机名或IP,port代表服务器进程所绑定的端口号。如连接成功,客户就可通过套接字与服务器通信,如果连接失败,会引发socket.error异常。
4、处理阶段,客户和服务器将通过send方法和recv方法通信。
5、传输结束,客户通过调用socket的close方法关闭连接。

例子:
server.py

import socket
s=socket.socket()
s.bind(('0.0.0.0',5200))    #ip地址和端口号
s.listen(5)
cs,address = s.accept()
print 'got connected from',address
cs.send('byebye')
ra=cs.recv(512)
print ra
cs.close()

client.py

import socket
s=socket.socket()
s.connect(('127.0.0.1',5200))   #与服务器程序ip地址和端口号相同
data=s.recv(512)
s.send('hihi')
s.close()
print 'the data received is',data

----------

无论是tcp协议的socket还是udp协议的socket,都是通过socket.socket(socket.AF_INET,socket.SOCK_STREAM/SOCK_DGRAM) 创建

第一个参数一般都是填写socket.AF_INET

第二个参数

Tcp: SOCK_STREAM

Udp:SOCK_DGRAM

 简单代码:

client.py

import socketimport time

if __name__=='__main__':    sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)    addr=('localhost',2000)    sock.connect(addr)    time.sleep(2)try:while True:            sock.send(raw_input('>>'))            buff=sock.recv(1024)print 'get: %s    %s' % (buff,time.ctime())except Exception,e:print "Error:",e        sock.close()
复制代码

services.py

  

import socketimport datetime

if __name__=='__main__':    sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)    sock.bind(('127.0.0.1',2000))    sock.listen(5)while True:        connection,address=sock.accept()        connection.settimeout(10000)while True:try:              buf=connection.recv(1024)print 'get: %s   %s' % (buf,datetime.datetime.now())if buf=='exit':break              connection.send(raw_input('>>'))except socket.timeout:print 'time out'                connection.close()
复制代码

Udp协议与tcp协议差不多,只是关键字不同而已

python socket coding相关推荐

  1. [Python_7] Python Socket 编程

    0. 说明 Python Socket 编程 1. TCP 协议 [TCP Server] 通过 netstat -ano 查看端口是否开启 # -*-coding:utf-8-*-"&qu ...

  2. python udp 直播_[Python] socket发送UDP广播实现聊天室功能

    原博文 2018-11-24 12:33 − 一.说明 本文主要使用socket.socket发送UDP广播来实现聊天室功能. 重点难点:理解UDP通讯流程.多线程.UDP广播收发等. 测试环境:Wi ...

  3. 【转】 python socket向百度发送http长连接请求 并做搜索

    http://hi.baidu.com/leejun_2005/blog/item/30fe9bd23a396c28960a1640.html [转] python socket向百度发送http长连 ...

  4. python socket 多人聊天室

    参考来源(其实我从上面复制了一点): Python 的 Socket 编程教程  http://www.oschina.net/question/12_76126 Python线程指南 http:// ...

  5. python socket 游戏_python socket模拟游戏开服

    python socket服务端 #!/usr/bin/python #-*- coding: utf-8 -*- import socket import os,sys host='127.0.0. ...

  6. python socket 实现的简单http服务器

    看这篇文章挺简约的收藏下,只需要替换reg.html  action  http://192.168.56.188:8000   为/ 即可不用改ip地址  post时 预备知识: 关于http 协议 ...

  7. python socket编程 实现简单p2p聊天程序

    转载自:https://www.cnblogs.com/wuxie1989/p/7204887.html python socket编程 实现简单p2p聊天程序 目标是写一个python的p2p聊天的 ...

  8. python socket的部分学习(ASDL)

    注:同一局域网内的测试 环境:python3.6.4,win10 代码如下 1.服务端(账号xxx,密码xx请换成自己的) #!/D:/python/Anaconda/python.exe # cod ...

  9. python socket双向通信_Python socket实现多对多全双工通信的方法

    服务器:#server.py #!/usr/bin/env python #-*-coding:utf-8-*- import sys import struct#将字符串打包为二进制流进行网络传输 ...

最新文章

  1. 文件流能转换格式吗_amr转换mp3格式文件
  2. python常用的内置函数
  3. 嵌入式c语言汇编混合编程,嵌入式C语言和汇编语言的混合编程
  4. python反射和高阶内置方法
  5. c语言中二维数组怎么,c语言中什么是二维数组
  6. hadoop tyarn冲突_Hadoop之Yarn
  7. 大神交流经验!浙大吴飞与贾扬清经典十问!
  8. vue 大概流程(未完)
  9. linux非阻塞输入函数,Linux fcntl函数设置阻塞与非阻塞
  10. yii2 restful的自定义api
  11. cad插件加载bplot成功用不了_Batchplot批量打印命令无效,对照情况进行解决
  12. abb机器人过载报错_ABB机器人驱动模块温度警告及保养方案简介
  13. Android使用iconfont图标
  14. 设备\Device\Harddisk0\D 有一个不正确的区块
  15. 惯性导航学习笔记——惯性技术基础知识
  16. 【JZOJ1320】拯救奶牛
  17. macOS High Sierra 10.13.6(17G65) IWith Clover 4596 and winPE含N显卡驱动
  18. 斗兽棋 java_GitHub - java-a/project1: 基于命令行的斗兽棋
  19. 我们的指纹是如何形成的,科学家找到主导指纹形成原因
  20. c#企业微信在线支付

热门文章

  1. php memcache
  2. springcloud(一)-初识
  3. 【20170926】【软工】第1次个人作业
  4. vue实现简单表格组件
  5. SSH框架的简单搭建步骤
  6. ajaxfileupload 跨域 (二级域名) 可行办法
  7. Oracle内部错误:ORA-00600[2608]一例
  8. 在Java 7里如何对文件进行操作
  9. 深度学习中IU、IoU(Intersection over Union)的概念理解以及python程序实现
  10. CVPR 2014 ObjectnessBING 原文翻译