Discuss / Python / 服务器的给大家贴个完整的,参考了楼下的评论!!!

服务器的给大家贴个完整的,参考了楼下的评论!!!

Topic source

server

# -*- coding: utf-8 -*-

import socket, threading, time

#TCP socket based on ipv4
#server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#listening on port
s.bind(('127.0.0.1', 9999))
s.listen(5)
print("Waiting for connection...")

def tcplink(sock, addr):
    print('Accept new connection from %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('Connection from %s:%s closed.' % addr)

while True:
    #receive a new connect 
    sock, addr = s.accept()
    #make a new thread dispose TCPlink
    t = threading.Thread(target=tcplink, args=(sock, addr))
    t.start()

client

# -*- coding:utf-8 -*-

import socket

#client
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#establish connection
s.connect(('127.0.0.1', 9999))

#receive a welcome message
print(s.recv(1024).decode('utf-8'))

for data in [b'Lambda', b'Bond', b'alpha']:
    #send data
    s.send(data)
    print(s.recv(1024).decode('utf-8'))
s.send(b'exit')
s.close()

在server的while True循环中, t = threading.Thread(target=tcplink, args=(sock, addr))是不是应该改为 t = threading.Thread(target=tcplink, args=(s, addr))?sock应该是函数里的局部变量吧

whatbeg

#3 Created at ... [Delete] [Delete and Lock User]

出现错误:

Traceback (most recent call last): File "C:/Users/Allen/AppData/Local/Programs/Python/Python35-32/client.py", line 4, in <module> s.connect(('127.0.0.1', 9999)) ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

上网查了也没查出什么原因,求教

廖雪峰

#4 Created at ... [Delete] [Delete and Lock User]

对方不让你连,换个目标

西瓜皮w

#5 Created at ... [Delete] [Delete and Lock User]

@whatbeg

你得先运行 server ,开启server后, 再运行 client 去链接。server端没有开启,肯定连不上。

Traceback (most recent call last): File "F:/程天阳/学习python/网络编程/TCP编程之服务器2.py", line 7, in <module> print(s.recv(1024).decode('utf-8')) ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。

和@whatbeg一样的问题...究竟是什么原因或者什么软件终止的...

我先运行server再运行client的,系统是win7 64位,也出现这个错误: ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接

houbo111

#8 Created at ... [Delete] [Delete and Lock User]

server程序有问题也会报这个错误的,运行server程序时(在运行client前),只会执行到waiting for 那里,这不代表下面的程序没问题

流智

#9 Created at ... [Delete] [Delete and Lock User]

我也是报错:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

酒仙放逐s

#10 Created at ... [Delete] [Delete and Lock User]

报错:由于目标计算机积极拒绝,无法连接。是因为要先运行server,再运行client才行,仔细检查下,肯定是这方面出了问题 报错:你的主机中的软件中止了一个已建立的连接。是因为server.py中程序出问题了,老师先讲的接受连接,再讲的创立新进程。实际应该是先创立新进程,再接受连接,即那两部分代码应该交换位置。具体可以参考恶魔的证明的讨论,他的server程序是正确的。有其他问题也可以参照他的程序。


  • 1
  • 2

Reply