import java.net.*;
import java.io.*;
class picclient 
{
public static void main(String[] args)throws Exception  
{
Socket s = new Socket("192.168.30.129",7797);
FileInputStream fis = new FileInputStream("D:\\2.jpg");
InputStream in = s.getInputStream();

byte[]buf1=new byte[1024*1024];
int b=0;
OutputStream out = s.getOutputStream();
while((b=fis.read(buf1))!=-1){
out.write(buf1,0,b);
out.flush();
}
s.shutdownOutput();
byte[]buf=new byte[1024*1024];
while((b=in.read(buf))!=-1){
System.out.println(new String(buf,0,b));
}
s.close();
System.out.println("Hello World!");
}
}
class picserver
{
public static void main(String args[])throws Exception{
FileOutputStream fos=new FileOutputStream("1.jpg");
ServerSocket server = new ServerSocket(7797);
Socket s=server.accept();
InputStream in=s.getInputStream();
byte[]buf=new byte[1024*1024];
int b=0;
while((b=in.read(buf,0,b))!=0){
fos.write(buf,0,b);
fos.flush();
}
OutputStream out=s.getOutputStream();
out.write("上传成功".getBytes());
server.close();
}
}
上传不了图片,运行时异常
Exception in thread "main" java.net.SocketException: Connection reset by peer: s
ocket write error
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
        at picclient.main(picclient.java:13)

解决方案 »

  1.   

    把你out.write(buf1,0,b);改为out.write(buf1);
    new String(buf,0,b) 改为new String(buf)            
    fos.write(buf,0,b); 改为fos.write(buf);
      

  2.   

    改了还是不行Exception in thread "main" java.net.ConnectException: Connection refused: conn
    t
            at java.net.PlainSocketImpl.socketConnect(Native Method)
            at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
            at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
            at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
            at java.net.Socket.connect(Socket.java:519)
            at java.net.Socket.connect(Socket.java:469)
            at java.net.Socket.<init>(Socket.java:366)
            at java.net.Socket.<init>(Socket.java:180)
            at picclient.main(picserver.java:7)
      

  3.   

    你这代码太乱了,完全看不明白,我建议你按这种方式写代码,你可以试一下
    package com.net.URL;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;public class TcpServer 
    {
    public static void main(String [] args) throws Exception
    {
    ServerSocket ss = new ServerSocket(5000);
    Socket socket = ss.accept();
    InputStream is = socket.getInputStream();byte [] buffer = new byte[200];
    int length = is.read(buffer);
    System.out.println(new String(buffer,0,length));
    OutputStream os = socket.getOutputStream();
    os.write("welcome".getBytes());
    is.close();
    os.close();
    socket.close();
    }
    }package com.net.URL;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    public class TctClient 
    {
    public static void main(String [] args) throws Exception
    {
    Socket socket = new Socket("127.0.0.1",5000);

    OutputStream os = socket.getOutputStream();
    os.write("hello world".getBytes());
    byte[] buffer = new byte[200];

    InputStream is = socket.getInputStream();
    int length = is.read(buffer);
    System.out.println(new String(buffer,0,length));

    // int length = 0;
    //
    // while(-1 != (length = is.read(buffer,0, buffer.length)))
    // {
    // String str = new String(buffer, 0, length);
    //
    // System.out.println(str);
    // }

    is.close();
    os.close();
    socket.close();
    }
    }