Python은 간단한 socket 서버와 클라이언트를 작성합니다

1732 단어
서버 측:
#!/usr/bin/python
import socket
host='127.0.0.1'
port=8123
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((host,port))
s.listen(2)
try:
       while True:
               conn,add=s.accept()
               while True:
                       data2=''
                       data1=conn.recv(3)
                       if data1=='EOF':
                               conn.send('hello clietn1')
                               break
                       if data1=='FOE':
                               conn.send('hello client2')
                               break
                       data2+=data1
                       print data2
except KeyboardInterrupt:
       print "you have CTRL+C,Now quit"
       s.close()

주: 서버 쪽에서 한 번에 3바이트의 데이터만 받습니다. 저는 읽기를 순환에 들어가게 하고 데이터 2에 계속 추가합니다. EOF를 읽을 때 데이터 2를 출력하고, FOE를 읽을 때 데이터 2를 출력합니다. (EOF와 FOE는 클라이언트가 데이터를 보냈을 때 보내는 종료부호), CTRLC+C를 받을 때 socket을 닫습니다.
클라이언트 1:
#!/usr/bin/env python
import socket
import os
ss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ss.connect(('127.0.0.1',8123))
#f=open('aa','wb')
ss.sendall('hello serverdddddddd')
os.system('sleep 1')
ss.send('EOF')
data=ss.recv(1024)
print "server dafu %s"%data
ss.close()

클라이언트 2:
#!/usr/bin/env python
import socket
import os
ss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ss.connect(('127.0.0.1',8123))
#f=open('aa','wb')
ss.sendall('wokao sile')
os.system('sleep 1')
ss.send('FOE')
data=ss.recv(1024)
print "server dafu %s"%data
ss.close()

좋은 웹페이지 즐겨찾기