1. 程式人生 > >1.4socket服務器打印信息的四種不同方式()

1.4socket服務器打印信息的四種不同方式()

span 綁定 col tip ner 1.4 一次 +++ soc

方式一

socker 服務器

# -*- coding: utf-8 -*- 
import sys,os,multiprocessing
from socket import *

serverHost = localhost serverPort = 50007

def
initListenerSocket(port=port): sock = socket(AF_INET,SOCK_STREAM) #創建TCP對象 sock.bind((‘‘,port)) #綁定端口 sock.listen(5) #
允許5個請求連接 conn,addr = sock.accept() #返回socket對象 return conn def server1(): mypid = os.getpid() #獲取系統進程 conn = initListenerSocket() file = conn.makefile(r) #file interface wrapper for i in
range(3): data = file.readline().rstrip() #讀取之前客戶端寫入file的值 print(Sever %s:%s%(mypid,data)) #當makefile(‘r‘)中為‘r‘時候,此時顯示的是print值 server1()

socket 客戶端

# -*- coding: utf-8 -*- 
import sys,os,multiprocessing
from socket import *

serverHost = localhost serverPort = 50007

def
redirectOut(port=serverPort, host=serverHost): sock = socket(AF_INET, SOCK_STREAM) sock.connect((host, port)) file = sock.makefile(w) sys.stdout = file #此時sys.stdout指向file,原始的 sys.stdout 指向控制臺,如果把文件的對象的引用賦給 sys.stdout,那麽 print 調用的就是文件對象的 write 方法 return sock def client1(): mypid = os.getpid() redirectOut() for i in range(3): print(Client %s:%s+++++%(mypid,i)) #當makefile(‘w‘)中為‘w‘時候,此時print不能打印,print後為寫入file中的值 sys.stdout.flush() #每一次print都會輸入刷新 client1()

方式二

socker 服務器

# -*- coding: utf-8 -*-
import sys,os,multiprocessing
from socket import *

serverHost = localhost
serverPort = 50007

def initListenerSocket(port=port):
    sock = socket(AF_INET,SOCK_STREAM)                   #創建TCP對象
    sock.bind((‘‘,port))                                 #綁定端口
    sock.listen(5)                                       #允許5個請求連接
    conn,addr = sock.accept()                            #返回socket對象
    return conn

def server2():
    mypid = os.getpid()
    conn = initListenerSocket()
    for i in range(3):
        conn.send((Sever %s:%s%(mypid,i)).encode())     #和下面的註釋功能一樣,但是下面不報EOF錯誤
        # ofile = conn.makefile(‘w‘)
        # sys.stdout=ofile
        # print((‘Sever %s:%s‘%(mypid,i)).encode())

server2()

socker 客戶端

# -*- coding: utf-8 -*- 
import sys,os,multiprocessing
from socket import *

serverHost = localhost serverPort = 50007

def
redirectIn(port=serverPort, host=serverHost): sock = socket(AF_INET, SOCK_STREAM) sock.connect((host, port)) file = sock.makefile(r) sys.stdin = file return sock def client2(): mypid = os.getpid() redirectIn() for i in range(3): data = input() #input獲取的是服務器發送過來的內容 print(Client %s got [%s]%(mypid,data)) #打印信息,出現EOF錯誤,不知道為什麽 client2()

方式三

socker 服務器

# -*- coding: utf-8 -*- 
import sys,os,multiprocessing 
from socket import *


serverHost = localhost
serverPort = 50007

def initListenerSocket(port=port):
    sock = socket(AF_INET,SOCK_STREAM)                   #創建TCP對象
    sock.bind((‘‘,port))                                 #綁定端口
    sock.listen(5)                                       #允許5個請求連接
    conn,addr = sock.accept()                            #返回socket對象
    return conn


def server3():
    mypid = os.getpid()
    conn = initListenerSocket()
    file = conn.makefile(r)                             #讀取之前客戶端寫入file的值
    for i in range(3):
        data = file.readline().rstrip()
        conn.send((Server %s got[%s]\n%(mypid,data)).encode())

server3()

socker 客戶端

# -*- coding: utf-8 -*- 
import sys,os,multiprocessing 
from socket import *


serverHost = localhost
serverPort = 50007

def redirectBothAsClient(port=serverPort,host=serverHost):
    sock = socket(AF_INET,SOCK_STREAM)
    sock.connect((host,port))
    ofile = sock.makefile(w)
    ifile = sock.makefile(r)
    sys.stdout = ofile
    sys.stdin = ifile
    return sock

def client3():
    mypid = os.getpid()
    redirectBothAsClient()
    for i in range(3):
        print(Client %s: %s%(mypid,i))                            #寫入ofile,再傳到服務器
        data = input()                                              #再傳回來
        sys.stderr.write(Client %s got [%s]\n%(mypid,data))       #打印出來,這裏不能用print打印
        #print(‘Client %s got [%s]\n‘%(mypid,data))

client3()

方式四

socker 服務器

# -*- coding: utf-8 -*- 
import sys,os,multiprocessing 
from socket import *


serverHost = localhost
serverPort = 50007

def initListenerSocket(port=port):
    sock = socket(AF_INET,SOCK_STREAM)                   #創建TCP對象
    sock.bind((‘‘,port))                                 #綁定端口
    sock.listen(5)                                       #允許5個請求連接
    conn,addr = sock.accept()                            #返回socket對象
    return conn

def server5():
    mypid = os.getpid()
    conn = initListenerSocket()
    file = conn.makefile(r)
    for i in range(3):
        conn.send((Server %s got[%s]\n % (mypid,i)).encode())
        data = file.readline().rstrip()
        print((Server %s got[%s]\n % (mypid, data)))

server5()

socker 客戶端

# -*- coding: utf-8 -*- 
import sys,os,multiprocessing 
from socket import *


serverHost = localhost
serverPort = 50007

def redirectBothAsClient(port=serverPort,host=serverHost):
    sock = socket(AF_INET,SOCK_STREAM)
    sock.connect((host,port))
    ofile = sock.makefile(w)
    ifile = sock.makefile(r)
    sys.stdout = ofile
    sys.stdin = ifile
    return sock

def client5():
    mypid = os.getpid()
    s = redirectBothAsClient()
    for i in range(3):
        data = input()
        print(Client %s got [%s]\n % (mypid, data))
        sys.stdout.flush()          #每一次print都會輸入刷新

client5()

1.4socket服務器打印信息的四種不同方式()