1 關鍵技術
1、互聯網TCP/IP協議
2、IP協議和端口
·IP協議
·端口
3、TCP協議和UPD協議
4、Socket:網絡編程的一個抽象概念
import socket, time
import threading
def tcplink(sock, addr):
print('接收一個來自%s:%s連接請求' % addr)
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, %s' % data.decode('utf-8')).encode('utf-8'))
sock.close()
print('來自%s:%s連接關閉了' % addr)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1', 8887))
s.listen(5)
print('等待客戶端連接...')
while True:
sock, addr = s.accept()
t = threading.Thread(target=tcplink, args=(sock, addr))
t.start()
import socket,time
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 8887))
print(s.recv(1024).decode('utf-8'))
for data in [b'Micheal', b'Tracy', b'Sarah']:
s.send(data)
print(s.recv(1024).decode('utf-8'))
s.send(b'exit')
s.close()
2 多線程編程
import threading
import time
exitFlag = 0
class myThread(threading.Thread):
def __init__(self, threadID, name, counter):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter
def run(self):
print('Starting ' + self.name)
print_time(self.name, self.counter, 5)
print('Exiting ' + self.name)
def print_time(threadName, delay, counter):
while counter:
if exitFlag:
thread.exit()
time.sleep(delay)
print('%s: %s' % (threadName, time.ctime(time.time())))
counter -= 1
thread1 = myThread(1, 'Thread-1', 1)
thread2 = myThread(2, 'Thread-2', 2)
thread1.start()
thread2.start()
print('\nExiting Main Thread')