装好环境想练练手了,但事实并不是想象中这么简单。。由于第一次接触Python和wingide开发工具,一开始甚至怎么运行都没搞懂,搞了好久总算能用写好的TCP客户端连上服务器端了,美滋滋
1 编写TCP客户端
import socket
target_host = "0.0.0.0"
target_post = 9999
# 建立一个socket对象
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接客户端
client.connect((target_host, target_post))
# 发送一些数据
sendMessage = input("please input send:");
client.send(sendMessage)
# 接收一些数据
response = client.recv(1024)
print response
首先,我们建立一个包含AF_INET和sock_STREAM参数的socket对象,AF_INET参数说明我们将使用标准的IPv4地址或者主机名,sock_STREAM说明这将是一个TCP客户端。
2 编写TCP服务器端
import socket
import threading
bind_ip = "0.0.0.0"
bind_port = 9999
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((bind_ip, bind_port))
server.listen(5)
print "[*] Listening on %s:%d" % (bind_ip, bind_port)
# 这是客户处理线程
def handle_client(client_socket):
# 打印客户端发送得到的内容
request = client_socket.recv(1024)
print "[*] Received: %s" % request
# 返回给客户端的内容
msgstring = input("please input:")
client_socket.send(msgstring)
# client_socket.send("ACK!")
client_socket.close()
while True:
client,addr = server.accept()
print "[*] Accepted connection from: %s:%d" % (addr[0], addr[1])
# 挂起客户端线程,处理传入的数据
client_handler = threading.Thread(target=handle_client, args=(client,))
client_handler.start()
3 运行查看结果
一开始不懂如何运行,导致服务器端老是死循环(其实是我没打开客户端,导致它死循环)
正确的打开方式是,打开两个wingIDE,一个打开TCP服务器端,一个打开TCP客户端。
先运行服务器端,结果如下:
右上方可以看到程序一直在运行,即等待客户端的接入。输入界面也可以知道服务器一直监听9999端口。
接着运行TCP客户端(此时服务器端一直也要开着),运行结果如下:
输入的字符一定要用双引号括起来,不然会报错。然后我们查看服务器端:
收到来自本机发出的消息,即刚刚输入的hello,然后给它回个信息。再查看客户端:
可以看到客户端收到了来自服务器端的信息,然后客户端关闭。
看到能正确运行,很开心!不过遇到个问题搞半天是真的难受。。。