Client端:
Socket s = null;
try {
s = new Socket("192.168.1.101",10013);
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
FileInputStream fis = new FileInputStream("G:\1.png");
OutputStream os = s.getOutputStream();
byte[] buf = new byte[1024];
int len = 0;
while((len = fis.read(buf))!=-1){
os.write(len);
}
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = br.readLine();
System.out.println("str");
br.close();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Server端:
try {
ServerSocket ss = new ServerSocket(10013);
Socket s = ss.accept();
BufferedInputStream bis = new BufferedInputStream(s.getInputStream());
byte[] buf = new byte[1024];
int len = 0;
while((len = bis.read(buf))!=-1){
FileOutputStream outputStream = new FileOutputStream("D:\2.png");
outputStream.write(buf,0,len);
System.out.println("1234");
}
PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
pw.println("上传成功");
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
服务端你在while循环中不断new FileOutputStream("D:\2.png")干啥,每次都创建新文件。
编码的问题。我以前也是遇到这个情况
我在外面,没有源码,我最近也在做Socket通信,是Android连C#服务器。
byte[] buf = new byte[1024];
int len = 0;
while((len = fis.read(buf))!=-1){
os.write(len);
你发个 len? int类型?。。。你告诉我,你发这么多包的长度过去是想干嘛?
len = fis.read(buf)//len等于buf包当前的长度,如果fis中的内容大于buf最大长度,len为1024,否则等于fis长度。
服务器表示:老子收到无数个长度?你告诉我怎么组包?
好了,友好聊天到此结束。
http://blog.csdn.net/a_zhon/article/details/52384129 可以看下我这篇博客,两台设备进行数据传输