Python socket(TCP阻塞模式)基础程式

来源:互联网 发布:淘宝图片轮播怎么做 编辑:程序博客网 时间:2024/05/29 17:19

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


tips:

1. 默认HOST_IP:127.0.0.1

2. 默认HOST_PORT:7676


参考代码:


1. 客户端程式


#!/usr/bin/env python# encoding: utf-8import socketimport osimport sysimport timeimport tracebackreload(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 sdef 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"breakdef main():host = "127.0.0.1"port = 7676sC = 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_bufferexcept KeyboardInterrupt:sC.close()sys.exit(0)if __name__ == '__main__':main()



2. 服务端程式


#!/usr/bin/env python# encoding: utf-8import socketimport osimport sysimport timereload(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 sdef 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 = 7676sS = 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_bufferexcept KeyboardInterrupt:sS.close()sC.close()sys.exit(0)except Exception:print "[-]Client is down"sys.exit(0)if __name__ == '__main__':main()