一个是打开一个port然后监听这个port,另外一个是打开一个指定主机的指定port,一个是被动,一个是主动,OK?
互传文件那要看谁先连谁,主动连接的那个是client端,用Socket,另外那个用ServerSocket类,实在要是搞不清楚就用UDPSocket吧,那个反正不存在客户端和服务器端的区别

解决方案 »

  1.   

    有Server就是服务器端
    没server就是client
      

  2.   

    GOOGLE查查吧,
    我记得我以前找到过一个一个IBM的关于SOCKET编程教程,很好,其中就有,
    文件传输问题。
      

  3.   

    接收端
    SocketServer ss = new SocketServer(i_port, i_maxConn);发送端
    Socket s = new Socket(接收端ip, 接收端port);这样就连起来了吧
      

  4.   

    java套接字上的例子: //客户端 
    import java.io.*; 
    import java.net.*; public class RemoteFileClient { 
    protected BufferedReader socketReader; 
    protected PrintWriter socketWriter; 
    protected String hostIp; 
    protected int hostPort; public RemoteFileClient(String aHostIp, int aHostPort) { 
    hostIp = aHostIp; 
    hostPort = aHostPort; 

    public String getFile(String fileNameToGet) { 
    StringBuffer fileLines = new StringBuffer(); try { 
    socketWriter.println(fileNameToGet); 
    socketWriter.flush(); String line = null; 
    while ((line = socketReader.readLine()) != null) 
    fileLines.append(line + "\n"); 
    } catch (IOException e) { 
    System.out.println("Error reading from file: " + fileNameToGet); 
    } return fileLines.toString(); 

    public static void main(String[] args) { 
    RemoteFileClient remoteFileClient = new RemoteFileClient("127.0.0.1", 3000); 
    remoteFileClient.setUpConnection(); 
    String fileContents = remoteFileClient.getFile("C:\\WINNT\\Temp\\RemoteFile.txt"); 
    remoteFileClient.tearDownConnection(); System.out.println(fileContents); 

    public void setUpConnection() { 
    try { 
    Socket client = new Socket(hostIp, hostPort); socketReader = new BufferedReader(new InputStreamReader(client.getInputStream())); 
    socketWriter = new PrintWriter(client.getOutputStream()); } catch (UnknownHostException e) { 
    System.out.println("Error setting up socket connection: unknown host at " + hostIp + ":" + hostPort); 
    } catch (IOException e) { 
    System.out.println("Error setting up socket connection: " + e); 


    public void tearDownConnection() { 
    try { 
    socketWriter.close(); 
    socketReader.close(); 
    } catch (IOException e) { 
    System.out.println("Error tearing down socket connection: " + e); 



    //服务端 
    import java.io.*; 
    import java.net.*; public class RemoteFileServer { 
    int listenPort; 
    public RemoteFileServer(int aListenPort) { 
    listenPort = aListenPort; 

    public void acceptConnections() { 
    try { 
    ServerSocket server = new ServerSocket(listenPort); 
    Socket incomingConnection = null; 
    while (true) { 
    incomingConnection = server.accept(); 
    handleConnection(incomingConnection); 

    } catch (BindException e) { 
    System.out.println("Unable to bind to port " + listenPort); 
    } catch (IOException e) { 
    System.out.println("Unable to instantiate a ServerSocket on port: " + listenPort); 


    public void handleConnection(Socket incomingConnection) { 
    try { 
    OutputStream outputToSocket = incomingConnection.getOutputStream(); 
    InputStream inputFromSocket = incomingConnection.getInputStream(); BufferedReader streamReader = new BufferedReader(new InputStreamReader(inputFromSocket)); FileReader fileReader = new FileReader(new File(streamReader.readLine())); BufferedReader bufferedFileReader = new BufferedReader(fileReader); 
    PrintWriter streamWriter = new PrintWriter(incomingConnection.getOutputStream()); 
    String line = null; 
    while ((line = bufferedFileReader.readLine()) != null) { 
    streamWriter.println(line); 
    } fileReader.close(); 
    streamWriter.close(); 
    streamReader.close(); 
    } catch (Exception e) { 
    System.out.println("Error handling a client: " + e); 


    public static void main(String[] args) { 
    RemoteFileServer server = new RemoteFileServer(3000); 
    server.acceptConnections(); 

    } 这只是单方的传送,想要实现双向的传送简单地加入原来的代码可以么
    ^-^! 
    我没学几天,望赐教!