首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

Java中Socket长连接多线程通讯,请大家帮忙写个简单的示例

2013-08-01 
Java中Socket长连接多线程通信,请大家帮忙写个简单的示例谁可以帮我写一个简单的Socket长连接在客户端使用

Java中Socket长连接多线程通信,请大家帮忙写个简单的示例
谁可以帮我写一个简单的Socket长连接在客户端使用多线程向服务端发送接收数据的程序供我参考下呢?
要求是这样的:
1.在客户端建立一个长连接(把代码也写上,多谢了!)
2.客户端向服务端可以连续发送多条数据(不一定会立马收到服务端返回的信息)
3.客户端接收服务端返回的数据(由于客户端向服务端发送数据以后不一定会立即返回信息,所以要采用多线程来防止程序堵塞的问题)

如果嫌粘到这太麻烦可以法我邮箱:254595561@qq.com,小弟在这先多谢大家了!现在碰到这个问题了,真心蛋疼呀!Java中Socket长连接多线程通讯,请大家帮忙写个简单的示例 Java 多线程 socket 通信
[解决办法]
看看NIO的网络通讯框架Netty,Mina等,写这个很容易,看一下午就会了。
[解决办法]
俺忘记是在哪个地方考下来的代码了,盗版一下发给你了,呵呵。。
MultiJabberServer.java


public class MultiJabberServer
{

    /** 
     * 方法名:main 
     * 描述: 
     * 作者: 
     * 日期:2012-8-23 下午02:38:20 
     * @param @param args 
     * @return void 
     */
    public static void main(String[] args)
    {
        ServerSocket s = null;
        Socket socket = null;
        try
        {
            s = new ServerSocket(8080);
            //等待新请求、否则一直阻塞  
            while (true)
            {
                socket = s.accept();
                System.out.println("socket:" + socket);
                new ServeOneJabbr(socket);



            }
        }
        catch (Exception e)
        {
            try
            {
                socket.close();
            }
            catch (IOException e1)
            {
                // TODO Auto-generated catch block  
                e1.printStackTrace();
            }
        }
        finally
        {
            try
            {
                s.close();
            }
            catch (IOException e)
            {
                // TODO Auto-generated catch block  
                e.printStackTrace();
            }
        }

    }

}


JabberClient.java

public class JabberClient
{

    /** 
     * 方法名:main 描述: 作者:白鹏飞 日期:2012-8-23 下午01:47:12 
     *  
     * @param @param args 
     * @return void 
     */
    public static void main(String[] args)
    {
        Socket socket = null;


        BufferedReader br = null;
        PrintWriter pw = null;
        try
        {
            //客户端socket指定服务器的地址和端口号  
            socket = new Socket("127.0.0.1", 8080);
            System.out.println("Socket=" + socket);
            //同服务器原理一样  
            br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            pw =
                new PrintWriter(
                    new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));
            for (int i = 0; i < 10; i++)
            {
                pw.println("howdy " + i);
                pw.flush();
                String str = br.readLine();
                System.out.println(str);
                Thread.sleep(1000);//停一秒
            }
            pw.println("END");
            pw.flush();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            try


            {
                System.out.println("close......");
                br.close();
                pw.close();
                socket.close();
            }
            catch (IOException e)
            {
                // TODO Auto-generated catch block  
                e.printStackTrace();
            }
        }
    }

}


JabberClient.java类可以多次启动,就是多线程啦~

嗯,找不到原帖,惭愧啊~Java中Socket长连接多线程通讯,请大家帮忙写个简单的示例
[解决办法]
ServeOneJabbr 这里线程类呢?

热点排行