python tcp

python tcp

http://www.binarytides.com/python-socket-programming-tutorial/
https://www.jianshu.com/p/e062b3dd110c
https://www.liaoxuefeng.com

server.py

'''
open socket
bind (add,port)
listen for incoming connections
accept connections
receive/send

Accept a connection. The socket must be bound to an address and listening for connections.
The return value can be either None or a pair (conn, address)
where conn is a new socket object usable to send and receive data on the connection,
and address is the address bound to the socket on the other end of the connection.
'''
import socket
import sys
import threading
import time

host='127.0.0.1'
port=9999

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print('server socket created')

try:
    s.bind((host,port))
except socket.error:
    print('bind failed')
    sys.exit()
print('bind complete')

#listen
s.listen(10)
print('start listen...')


def tcplink(sock, addr):
    print('accept new connection {0}:{1}'.format(addr[0],str(addr[1])))
    #send message to connected client
    sock.send(b'welcome to server!')
    while True:
        #receive btye
        data=sock.recv(1024)
        msg='hello '+data.decode('utf-8')
        #time.sleep(1)
        if not data:
            break
        sock.sendall(msg.encode('utf-8'))
    sock.close()
    print('conection from {0}:{1} closed'.format(addr[0],addr[1]))

while True:
    #accept new connection
    sock,addr=s.accept()
    t=threading.Thread(target=tcplink,args=(sock,addr))
    t.start()

client.py

import socket
import sys

host='localhost'
port=9999

try:

    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
except socket.error:
    print('socket create failed')
    sys.exit()

s.connect((host,port))
print(s.recv(1024).decode('utf-8'))

while True:
    data=input('please input some string\n')
    if not data or data=='exit':
        break

    s.sendall(str(data).encode('utf-8'))
    ret=s.recv(1024)
    print(ret.decode('utf-8'))
s.close()

你可能感兴趣的:(python tcp)