socket通信无法在两个电脑之间传输该怎么解决?

在我的电脑上可以传输,但是在两台电脑上就不行了,请问该怎么解决。
socket通信无法在两个电脑之间传输该怎么解决?


#!coding=utf-8

#客户端

import socket

import os

import sys

import struct

def socket_client(host, port, filepath):

try:

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

s.connect((host, port))

except socket.error as msg:

print(msg)

sys.exit(1)

print(s.recv(1024))

filepath = filepath.replace('\\', '/')

# 判断是否为文件

if os.path.isfile(filepath):

# 定义定义文件信息。128s表示文件名为128bytes长,l表示一个int或log文件类型,在此为文件大小

fileinfo_size = struct.calcsize('128sl')

# 定义文件头信息,包含文件名和文件大小

fhead = struct.pack('128sl', os.path.basename(filepath).encode('utf-8'), os.stat(filepath).st_size)

# 发送文件名称与文件大小

s.send(fhead)

# 将传输文件以二进制的形式分多次上传至服务器

fp = open(filepath, 'rb')

while 1:

data = fp.read(1024)

if not data:

print('{0} 文件发送完毕...'.format(os.path.basename(filepath)))

break

s.send(data)

# 关闭当期的套接字对象

s.close()

if __name__ == '__main__':

filepath = 'D:/1.jpg'

socket_client('127.0.0.1', 9001, filepath)

#!coding=utf-8

#服务端

import threading

import socket

import struct

import sys

def socket_service(host, port):

try:

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

s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

# 绑定端口

s.bind((host, port))

# 设置监听数

s.listen(10)

except socket.error as msg:

print(msg)

sys.exit(1)

print('等待连接...')

while 1:

# 等待请求并接受(程序会停留在这一旦收到连接请求即开启接受数据的线程)

conn, addr = s.accept()

# 接收数据

t = threading.Thread(target=deal_data, args=(conn, addr))

t.start()

def deal_data(conn, addr):

print('从 {0} 接收到新连接'.format(addr))

# conn.settimeout(500)

# 收到请求后的回复

conn.send('Hi, Welcome to the server!'.encode('utf-8'))

while 1:

# 申请相同大小的空间存放发送过来的文件名与文件大小信息

fileinfo_size = struct.calcsize('128sl')

# 接收文件名与文件大小信息

buf = conn.recv(fileinfo_size)

# 判断是否接收到文件头信息

if buf:

# 获取文件名和文件大小

filename, filesize = struct.unpack('128sl', buf)

fn = filename.strip(b'\00')

fn = fn.decode()

print('新文件: {0}, 文件大小: {1}'.format(str(fn), filesize))

recvd_size = 0 # 定义已接收文件的大小

# 存储在该脚本所在目录下面

fp = open('./' + str(fn), 'wb')

print('开始接收...')

# 将分批次传输的二进制流依次写入到文件

while not recvd_size == filesize:

if filesize - recvd_size > 1024:

data = conn.recv(1024)

recvd_size += len(data)

else:

data = conn.recv(filesize - recvd_size)

recvd_size = filesize

fp.write(data)

fp.close()

print('接收结束...')

# 传输结束断开连接

conn.close()

break

if __name__ == "__main__":

socket_service('127.0.0.1', 9001)


回答:

是不是没有改ip,试下把127.0.0.1改成内网ip

以上是 socket通信无法在两个电脑之间传输该怎么解决? 的全部内容, 来源链接: utcz.com/a/158800.html

回到顶部