Sockets 如何通过套接字连接发送图像?

Sockets 如何通过套接字连接发送图像?,sockets,dart,socket.io,dart-pub,Sockets,Dart,Socket.io,Dart Pub,我一直在尝试通过套接字连接将图像从客户端发送到服务器,并将其保存在服务器上 套接字连接可以很好地处理字符串消息,但当我尝试发送图像时,它无法正确传输。请告诉我正确的方法是什么 服务器端代码: 服务器端的错误映像: 只需在客户端将socket.writemessage更改为socket.addmessage,就可以开始了 Future<void> sendMessage(Socket socket, Uint8List message) async { print('Client:

我一直在尝试通过套接字连接将图像从客户端发送到服务器,并将其保存在服务器上

套接字连接可以很好地处理字符串消息,但当我尝试发送图像时,它无法正确传输。请告诉我正确的方法是什么

服务器端代码:

服务器端的错误映像:

只需在客户端将socket.writemessage更改为socket.addmessage,就可以开始了

Future<void> sendMessage(Socket socket, Uint8List message) async {
 print('Client: $message');
 socket.add(message);
 }
因为socket.writeobject通过调用object.toString将对象转换为字符串。 祝您度过愉快的一天:

使用了stackvoerflow上另一个答案中的socket.addStream,效果很好。谢谢:
import 'dart:convert';
import 'dart:io';
import 'dart:typed_data';
import 'package:image/image.dart';
void main() async {
  // bind the socket server to an address and port
  final server = await ServerSocket.bind('127.0.0.1', 8000);

  // listen for clent connections to the server
  server.listen((client) {
    handleConnection(client);
  });
}

void handleConnection(Socket client) {
  print('Connection from'
      ' ${client.remoteAddress.address}:${client.remotePort}');

  // listen for events from the client
  client.listen(

    // handle data from the client
    (Uint8List data) async {
      // final message = String.fromCharCodes(data);
 
      print(data);
      await File('new.jpg').writeAsBytes(data);
    },

    // handle errors
    onError: (error) {
      print(error);
      client.close();
    },

    // handle the client closing the connection
    onDone: () {
      print('Client left');
      client.close();
    },
  );
}
Future<void> sendMessage(Socket socket, Uint8List message) async {
 print('Client: $message');
 socket.add(message);
 }