前置知识:Python基础语法,socket库

tips:

1. 默认HOST_IP:127.0.0.1

2. 默认HOST_PORT:7676

参考代码:

1. 客户端程式

  1. #!/usr/bin/env python
  2. # encoding: utf-8
  3. import socket
  4. import os
  5. import sys
  6. import time
  7. import traceback
  8. reload(sys)
  9. sys.setdefaultencoding("utf-8")
  10. def SocketInit():
  11. try:
  12. s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  13. except Exception as e:
  14. print "[-]Socket Create Error"
  15. sys.exit(-1)
  16. else:
  17. print "[*]Socket Create Success"
  18. return s
  19. def Conn(s,host,port):
  20. while 1:
  21. try:
  22. s.connect((host,port))
  23. except Exception as e:
  24. print "[-]Socket Connect Error"
  25. #traceback.print_exc()
  26. time.sleep(2)
  27. #sys.exit(-1)
  28. else:
  29. print "[*]Socket Connect Success"
  30. break
  31. def main():
  32. host = "127.0.0.1"
  33. port = 7676
  34. sC = SocketInit()
  35. Conn(sC, host, port)
  36. print sC.recv(1024)
  37. try:
  38. while 1:
  39. Str_buffer = raw_input(host+":"+str(port)+">")
  40. try:
  41. sC.send(Str_buffer)
  42. except Exception as e:
  43. print "[-]Can not send Data"
  44. else:
  45. recv_buffer = sC.recv(1024)
  46. if not recv_buffer:
  47. print "[-]Server is Off"
  48. else:
  49. print recv_buffer
  50. except KeyboardInterrupt:
  51. sC.close()
  52. sys.exit(0)
  53. if __name__ == '__main__':
  54. main()

2. 服务端程式

  1. #!/usr/bin/env python
  2. # encoding: utf-8
  3. import socket
  4. import os
  5. import sys
  6. import time
  7. reload(sys)
  8. sys.setdefaultencoding("utf-8")
  9. def SocketInit():
  10. try:
  11. s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  12. except Exception as e:
  13. print "[-]Socket Create Error"
  14. sys.exit(-1)
  15. else:
  16. print "[*]Socket Create Success"
  17. return s
  18. def BindSocket(s,host,port):
  19. try:
  20. s.bind((host,port))
  21. except Exception as e:
  22. print "[-]Socket Bind Error"
  23. sys.exit(-1)
  24. else:
  25. print "[*]Socket Bind Success"
  26. def main():
  27. host = "127.0.0.1"
  28. port = 7676
  29. sS = SocketInit()
  30. BindSocket(sS, host, port)
  31. sS.listen(1)
  32. try:
  33. print "[+]Waiting for Connect ..."
  34. sC,addr = sS.accept()
  35. except Exception as e:
  36. print "[-]Server Accept Error"
  37. sys.exit(-1)
  38. sC.send("[*]Welcome to PeterZ-Server")
  39. print "[*]Connect to %s:%d" % (addr[0],addr[1])
  40. while 1:
  41. try:
  42. Str_buffer = sC.recv(1024)
  43. Send_buffer = "%s:%s(%s)>%s" % (addr[0],addr[1],time.ctime(),Str_buffer)
  44. sC.send(Send_buffer)
  45. print Send_buffer
  46. except KeyboardInterrupt:
  47. sS.close()
  48. sC.close()
  49. sys.exit(0)
  50. except Exception:
  51. print "[-]Client is down"
  52. sys.exit(0)
  53. if __name__ == '__main__':
  54. main()

Python socket(TCP阻塞模式)基础程式的更多相关文章

  1. Python Socket单线程+阻塞模式

    Python之旅]第五篇(二):Python Socket单线程+阻塞模式 python Socket单线程 Socket阻塞模式 串行发送 摘要:  前面第五篇(一)中的一个Socket例子其实就是 ...

  2. c++之socket,阻塞模式

    这里描述下socket的阻塞模式: 首先,socket有几个函数 socket() 创建socket bind() 绑定socket到一个地址 listen() 开启soket监听 accept()  ...

  3. TCP阻塞模式开发

    在阻塞模式下,在IO操作完成前,执行的操作函数将一直等候而不会立刻返回,该函数所在的进程会阻塞在这里.相反,在非阻塞模式下,套接字函数会立即返回,而不管IO是否完成,该函数所在的线程将继续运行.阻塞模 ...

  4. python socket非阻塞及python队列Queue

    一. python非阻塞编程的settimeout与setblocking+select 原文:www.th7.cn/Program/Python/201406/214922.shtml 侧面认证Py ...

  5. NIO Socket非阻塞模式

    NIO主要原理和适用 NIO 有一个主要的类Selector,这个类似一个观察者,只要我们把需要探知的socketchannel告诉Selector,我们接着做别的事情,当有 事件发生时,他会通知我们 ...

  6. 看到关于socket非阻塞模式设置方式记录一下。

    关于socket的阻塞与非阻塞模式以及它们之间的优缺点,这已经没什么可言的:我打个很简单的比方,如果你调用socket send函数时: 如果是阻塞模式下: send先比较待发送数据的长度len和套接 ...

  7. 简单使用SOCKET,TCP,UDP模式之间的通信

    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机网络OSI模型中, ...

  8. 关于一个socket在阻塞模式下是否还可以使用的实验

    想到一个socket在多线程模式下,是否可以同时使用的问题,比如socket A阻塞在recv,而别的线程用socket A send是否能成功,下面上实验代码 void thread_socket( ...

  9. python socket+tcp三次握手四次撒手学习+wireshark抓包

    Python代码: server: #!/usr/bin/python # -*- coding: UTF-8 -*- # 文件名:server.py import socket # 导入 socke ...

随机推荐

  1. 面试官:不会sql优化?出门右转顺便带上门,谢谢

    导读 作为一个后端程序员,数据库这个东西是绕不开的,特别是写sql的能力,如果您参加过多次面试,那么一定会从面试复盘中发现面试官总是会考察到sql优化这个东西. 我在之前的多次面试中最常遇到的一个问题 ...

  2. django Form 效验

    Django 登入效验 .py from django import forms from student import models from django.core.exceptions impo ...

  3. 计算机二级Python学习笔记(一):温度转换

    今天通过一个温度转换的十行代码,理解了一些Python的基本元素. 所谓温度转换,就是摄氏度和华氏度的转换,要求输入摄氏度,可以输出华氏度,反之一样能实现.代码如下: #TempConvert.py ...

  4. [POJ2828] Buy Tickets(待续)

    [POJ2828] Buy Tickets(待续) 题目大意:多组测试,每组给出\(n\)条信息\((a,b)\),表示\(b\)前面有\(a\)个人,顺序靠后的信息优先级高 Solution.1 由 ...

  5. Redis的常用淘汰策略以及算法实现

    一.Redis的内存配置 1,Redis配置内存为多少合适? 默认:如果不设置最大内存大小或者设置最大内存大小为0,在64为操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存. 极限情况: ...

  6. apk签名、包名

    //通过各手机管理软件,如如360.豌豆荚等查看 //使用命令行,可以查看到permission.packagename.title.versionCode等 aapt dump badging ~/ ...

  7. 实验: survivor放不下的对象进入老年代

    实验一: 存活对象包含 小于survivor大小的对象 + 大于survivor的对象 private static final Integer _1MB = 1024 * 1024; /** * - ...

  8. POJ3278_Catch That Cow(JAVA语言)

    思路:bfs裸题.三个选择:向左一个单位,向右一个单位,向右到2*x //注意,需要特判n是否大于k,大于k时只能向左,输出n-k.第一次提交没注意,结果RE了,, Catch That Cow Ti ...

  9. P2142_高精度减法(JAVA语言)

    思路:BigInteger double kill! //四行搞定 题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输 ...

  10. 菜刀jsp小马

    逛google收获小马一枚,收藏一下 <%@page import="java.io.*,java.util.*,java.net.*,java.sql.*,java.text.*&q ...