Sockets 如何通过套接字连接发送图像?
我一直在尝试通过套接字连接将图像从客户端发送到服务器,并将其保存在服务器上 套接字连接可以很好地处理字符串消息,但当我尝试发送图像时,它无法正确传输。请告诉我正确的方法是什么 服务器端代码: 服务器端的错误映像: 只需在客户端将socket.writemessage更改为socket.addmessage,就可以开始了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:
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);
}