这么一个例子,通过在Java窗体中控制socket的内容传输,
1、在窗体中有一个ip地址的输入框,一个连接服务端的按钮,一个服务端监听的时间设置的输入框(可以用来设置服务端多长时间监听一次端口),接着一个设置服务端时间监听的设置按钮,还有一个断开连接的按钮
2、在服务端,通过while来不断的使用DataOuputStream对象来向客户端传输数据,
3、窗体负责接收数据,并存入数据库要求:1、先输入服务端的ip地址,然后点击连接,连接成功后,服务端开始传输数据
      2、在传输的过程中,可以通过设置监听的时间来控制服务端每隔多长时间传回一次数据
      3、最后,在点击关闭的时候,可以关闭服务端的传输,如何在次点击连接的时候,还可以继续传输数据那位高手可以帮一下啊,实在是想不出来了,控制服务端传输的那块总是弄不好,从服务端传输数据到时能做出来,但是不能点击关闭来停止服务端的数据传输,最好是有代码发来看看,小弟能力有限,希望高手帮助

解决方案 »

  1.   

    我是想,在点击连接时,这时socket不是连接同了么,服务器开始使用流的形式传输数据,在传输一段时间后(可能是很长时间),我想点击关闭按钮,断开连接,然后关闭服务端的写入流。等到我再次单机连接的时候,服务端又可以继续传输数据。说白了,我就是想在传输的同时,停止服务端的运行
      

  2.   

    你说的就是一般模式的socket应用,搜一搜很多的
    服务端循环监听客户端连接请求(java.net.ServerSocket.accept() 
    ),可以通过开辟新线程来处理连接后事务,这样就不会影响监听主线程,不管连接线程当前工作与否。至于关闭,客户端这边关闭后,服务端这边自然就接收到了信号,所以不必刻意发送了。
    import java.io.DataOutputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;public class MainClass {    public static void main(String args[]) {
        
            try {            int port = 5555;
                ServerSocket ss = new ServerSocket(port);            while (true) {
                    // Accept incoming requests
                    Socket s = ss.accept();                // Write result to client, uses thread working mode instead
                    OutputStream os = s.getOutputStream();
                    DataOutputStream dos = new DataOutputStream(os);
                    dos.writeInt(100);                s.close();
                }
            } catch (Exception e) {
                System.out.println("Exception: " + e);
            }
        }
    }