在我的程序中获取字符串或缓冲区不是int错误

2024-03-29 13:30:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python程序的新手。我编写了一个客户机/服务器程序来添加两个数字。客户机给出两个数字,服务器加起来。运行时,我在客户端遇到上述错误。你知道吗

客户端.py

!/usr/bin/python

import socket
import sys

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('127.0.0.1', 58817)
sock.connect(server_address)

a=raw_input("Enter a number: ")
b=raw_input("Enter a number: ")

sock.sendall(a,b)
data = sock.recv(1024)

print data

sock.close()

服务器.py

!/usr/bin/python

import socket
import sys

def sum(a, b):
  data=a + b
  return data

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('127.0.01', 58817)
sock.bind(server_address)
sock.listen(1)
connection, client_address = sock.accept()

print ("connection from", client_address)

while True:
 data=connection.recv(1024)
 if not data: break
 print "server received : ", repr(data)
 sum(data)

connection.sendall(data)
connection.close()

在运行程序时,我在客户端遇到以下错误

Enter a number: 4
Enter a number: 3

Traceback (most recent call last):



File "clientadd.py", line 15, in <module>
    sock.sendall(a,b)
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
TypeError: an integer is required

客户端分配int(a,b)有一些错误。如何改变这一点,并把一些顺序作为服务器读取?有人能帮我吗?并且可以检查程序是否良好,是否在工作状态下得到输出?你知道吗

谢谢!你知道吗


Tags: pyimport服务器客户端numberdataserveraddress
2条回答

请记住,您只能通过套接字发送或接收字节。所以,您的客户机和套接字都需要反映这一点。你知道吗

在客户端,您可以执行以下操作,而不是sendall(a,b):

b=bytes("{},{}".format(a,b),"ascii")
sock.sendall(b)

在服务器端,解析字符串以获得整数。你知道吗

data=connection.recv(1024)
a,b = data.decode().split(',')
a,b = int(a),int(b)

您现在应该能够以字节形式发回总和。你知道吗

你在server_address服务器端有一个输入错误。应该是('127.0.0.1', 58817)客户端会给出一个错误,因为它试图连接的服务器不存在。你知道吗

相关问题 更多 >