TCP編程

TCP

TCP編程的服務器端一般步驟是:
  1、創建一個socket,用函數socket();
  2、設置socket屬性,用函數setsockopt(); * 可選
  3、綁定IP地址、端口等信息到socket上,用函數bind();
  4、開啓監聽,用函數listen();
  5、接收客戶端上來的連接,用函數accept();
  6、收發數據,用函數send()和recv(),或者read()和write();
  7、關閉網絡連接;
  8、關閉監聽;
 

#!/usr/bin/env python3
#-*- coding:utf8 -*-

import socket
import time
import threading

# 創建tcp socket, 面向流模式
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 綁定IP地址 端口號
s.bind(('127.0.0.1', 5000))
# 開啓監聽, 5爲等待連接的最大數
s.listen(5)
print("Waiting for connection...")

def tcplink(sock, addr):
    print("Accept new connection from {}:{}".format(addr[0], addr[1]))
    sock.send(b'Welcome')
    while True:
        data = sock.recv(1024)
        time.sleep(1)
        if not data or data.decode('utf-8') == 'exit':
            break
        sock.send('Hello, {}'.format(data.decode('utf-8')).encode('utf-8'))
    sock.close()
    print('Connection from {}:{} closed.'.format(addr[0], addr[1]))

# 用循環來接受來自客戶端的連接
while True:
    # 接受一個新連接
    sock, addr = s.accept()
    # 創建線程來處理TCP連接
    t = threading.Thread(target=tcplink, args=(sock, addr))
    t.start()

TCP編程的客戶端一般步驟是:
  1、創建一個socket,用函數socket();
  2、連接服務器,用函數connect(),指定對方IP與端口;
  3、收發數據,用函數send()和recv(),或者read()和write();
  4、關閉網絡連接;

#!/usr/bin/env python3
#-*- coding:utf8 -*-
import socket

# 創建socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 建立連接
s.connect(('127.0.0.1', 5000))
# 接收消息
print(s.recv(1024).decode('utf-8'))
for data in [b'Michael', b'Tracy', b'Sarah']:
    # 發送數據
    s.send(data)
    print(s.recv(1024).decode('utf-8'))
s.send(b'exit')
s.close()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章