Python socket(TCP阻塞模式)基础程式
前置知识:Python基础语法,socket库
tips:
1. 默认HOST_IP:127.0.0.1
2. 默认HOST_PORT:7676
参考代码:
1. 客户端程式
#!/usr/bin/env python
# encoding: utf-8
import socket
import os
import sys
import time
import traceback
reload(sys)
sys.setdefaultencoding("utf-8")
def SocketInit():
try:
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
except Exception as e:
print "[-]Socket Create Error"
sys.exit(-1)
else:
print "[*]Socket Create Success"
return s
def Conn(s,host,port):
while 1:
try:
s.connect((host,port))
except Exception as e:
print "[-]Socket Connect Error"
#traceback.print_exc()
time.sleep(2)
#sys.exit(-1)
else:
print "[*]Socket Connect Success"
break
def main():
host = "127.0.0.1"
port = 7676
sC = SocketInit()
Conn(sC, host, port)
print sC.recv(1024)
try:
while 1:
Str_buffer = raw_input(host+":"+str(port)+">")
try:
sC.send(Str_buffer)
except Exception as e:
print "[-]Can not send Data"
else:
recv_buffer = sC.recv(1024)
if not recv_buffer:
print "[-]Server is Off"
else:
print recv_buffer
except KeyboardInterrupt:
sC.close()
sys.exit(0)
if __name__ == '__main__':
main()
2. 服务端程式
#!/usr/bin/env python
# encoding: utf-8
import socket
import os
import sys
import time
reload(sys)
sys.setdefaultencoding("utf-8")
def SocketInit():
try:
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
except Exception as e:
print "[-]Socket Create Error"
sys.exit(-1)
else:
print "[*]Socket Create Success"
return s
def BindSocket(s,host,port):
try:
s.bind((host,port))
except Exception as e:
print "[-]Socket Bind Error"
sys.exit(-1)
else:
print "[*]Socket Bind Success"
def main():
host = "127.0.0.1"
port = 7676
sS = SocketInit()
BindSocket(sS, host, port)
sS.listen(1)
try:
print "[+]Waiting for Connect ..."
sC,addr = sS.accept()
except Exception as e:
print "[-]Server Accept Error"
sys.exit(-1)
sC.send("[*]Welcome to PeterZ-Server")
print "[*]Connect to %s:%d" % (addr[0],addr[1])
while 1:
try:
Str_buffer = sC.recv(1024)
Send_buffer = "%s:%s(%s)>%s" % (addr[0],addr[1],time.ctime(),Str_buffer)
sC.send(Send_buffer)
print Send_buffer
except KeyboardInterrupt:
sS.close()
sC.close()
sys.exit(0)
except Exception:
print "[-]Client is down"
sys.exit(0)
if __name__ == '__main__':
main()
Python socket(TCP阻塞模式)基础程式的更多相关文章
- Python Socket单线程+阻塞模式
Python之旅]第五篇(二):Python Socket单线程+阻塞模式 python Socket单线程 Socket阻塞模式 串行发送 摘要: 前面第五篇(一)中的一个Socket例子其实就是 ...
- c++之socket,阻塞模式
这里描述下socket的阻塞模式: 首先,socket有几个函数 socket() 创建socket bind() 绑定socket到一个地址 listen() 开启soket监听 accept() ...
- TCP阻塞模式开发
在阻塞模式下,在IO操作完成前,执行的操作函数将一直等候而不会立刻返回,该函数所在的进程会阻塞在这里.相反,在非阻塞模式下,套接字函数会立即返回,而不管IO是否完成,该函数所在的线程将继续运行.阻塞模 ...
- python socket非阻塞及python队列Queue
一. python非阻塞编程的settimeout与setblocking+select 原文:www.th7.cn/Program/Python/201406/214922.shtml 侧面认证Py ...
- NIO Socket非阻塞模式
NIO主要原理和适用 NIO 有一个主要的类Selector,这个类似一个观察者,只要我们把需要探知的socketchannel告诉Selector,我们接着做别的事情,当有 事件发生时,他会通知我们 ...
- 看到关于socket非阻塞模式设置方式记录一下。
关于socket的阻塞与非阻塞模式以及它们之间的优缺点,这已经没什么可言的:我打个很简单的比方,如果你调用socket send函数时: 如果是阻塞模式下: send先比较待发送数据的长度len和套接 ...
- 简单使用SOCKET,TCP,UDP模式之间的通信
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机网络OSI模型中, ...
- 关于一个socket在阻塞模式下是否还可以使用的实验
想到一个socket在多线程模式下,是否可以同时使用的问题,比如socket A阻塞在recv,而别的线程用socket A send是否能成功,下面上实验代码 void thread_socket( ...
- python socket+tcp三次握手四次撒手学习+wireshark抓包
Python代码: server: #!/usr/bin/python # -*- coding: UTF-8 -*- # 文件名:server.py import socket # 导入 socke ...
随机推荐
- 面试官:不会sql优化?出门右转顺便带上门,谢谢
导读 作为一个后端程序员,数据库这个东西是绕不开的,特别是写sql的能力,如果您参加过多次面试,那么一定会从面试复盘中发现面试官总是会考察到sql优化这个东西. 我在之前的多次面试中最常遇到的一个问题 ...
- django Form 效验
Django 登入效验 .py from django import forms from student import models from django.core.exceptions impo ...
- 计算机二级Python学习笔记(一):温度转换
今天通过一个温度转换的十行代码,理解了一些Python的基本元素. 所谓温度转换,就是摄氏度和华氏度的转换,要求输入摄氏度,可以输出华氏度,反之一样能实现.代码如下: #TempConvert.py ...
- [POJ2828] Buy Tickets(待续)
[POJ2828] Buy Tickets(待续) 题目大意:多组测试,每组给出\(n\)条信息\((a,b)\),表示\(b\)前面有\(a\)个人,顺序靠后的信息优先级高 Solution.1 由 ...
- Redis的常用淘汰策略以及算法实现
一.Redis的内存配置 1,Redis配置内存为多少合适? 默认:如果不设置最大内存大小或者设置最大内存大小为0,在64为操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存. 极限情况: ...
- apk签名、包名
//通过各手机管理软件,如如360.豌豆荚等查看 //使用命令行,可以查看到permission.packagename.title.versionCode等 aapt dump badging ~/ ...
- 实验: survivor放不下的对象进入老年代
实验一: 存活对象包含 小于survivor大小的对象 + 大于survivor的对象 private static final Integer _1MB = 1024 * 1024; /** * - ...
- POJ3278_Catch That Cow(JAVA语言)
思路:bfs裸题.三个选择:向左一个单位,向右一个单位,向右到2*x //注意,需要特判n是否大于k,大于k时只能向左,输出n-k.第一次提交没注意,结果RE了,, Catch That Cow Ti ...
- P2142_高精度减法(JAVA语言)
思路:BigInteger double kill! //四行搞定 题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输 ...
- 菜刀jsp小马
逛google收获小马一枚,收藏一下 <%@page import="java.io.*,java.util.*,java.net.*,java.sql.*,java.text.*&q ...