`
liudaoru
  • 浏览: 1560701 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java socket例子

    博客分类:
  • java
阅读更多

今天没事继续试着玩,感觉这次一定要彻底搞定了,不能继续像以前那样了!!!

 

Server端

package test.bwl;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketManager {
	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) {
		SocketManager manager = new SocketManager();
		manager.doListen();
	}

	public void doListen() {
		ServerSocket server;
		try {
			server = new ServerSocket(9991);
			while (true) {
				Socket client = server.accept();
				new Thread(new SSocket(client)).start();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	//服务器进程
	class SSocket implements Runnable {

		Socket client;

		public SSocket(Socket client) {
			this.client = client;
		}

		public void run() {
			DataInputStream input;
			DataOutputStream output;
			try {
				input = new DataInputStream(client.getInputStream());
				output = new DataOutputStream(client.getOutputStream());
				//
				String listMsg = input.readUTF();
				output.writeUTF("Recive:  " + listMsg + "    \r\n Thx...");
				System.out.println("Recive:   " + listMsg);
				listMsg = input.readUTF();
				output.writeUTF("Recive Second:  " + listMsg + "    \r\n Thx...");
				System.out.println("Recive Second:   " + listMsg);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}

 

Client端:

package test.bwl;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class SocketClient {

	public static void main(String[] args) {
		Socket socket = null;
		try {
			socket = new Socket("127.0.0.1", 9991);
			//向服务器端第一次发送字符串   
			OutputStream netOut = socket.getOutputStream();
			DataOutputStream doc = new DataOutputStream(netOut);
			DataInputStream in = new DataInputStream(socket.getInputStream());
			//向服务器端第二次发送字符串   
			doc.writeUTF("list");
			String res = in.readUTF();
			System.out.println(res);
			doc.writeUTF("bye");
			res = in.readUTF();
			System.out.println(res);
			doc.close();
			in.close();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (socket != null) {
				try {
					socket.close();
				} catch (IOException e) {
				}
			}
		}
	}
}

 

 

分享到:
评论
14 楼 resteater 2014-08-05  
代码排版感觉有点乱!收发信息代码可读性不强!请问第一次发服务器发送信息,哪里发了?只是定义了一个发送通道而已,所以你的注释写错,这样会误导别人!
13 楼 resteater 2014-08-05  
代码排版感觉有点乱!收发信息代码可读性不强!请问第一次发服务器发送信息,哪里发了?只是定义了一个发送通道而已,所以你的注释写错,这样会误导别人!
12 楼 kdsde 2013-06-21  
11 楼 z87663849 2013-04-12  
可以增加个长链接来试试!
9 楼 speedup 2011-12-09  
client.close();这句要加上,
负责服务端会一直阻塞在这里。
8 楼 speedup 2011-12-09  
在线程里面的 Socket client;  没有close掉啊。
7 楼 奥义之舞 2011-06-21  
    
6 楼 uqortbsa 2010-09-30  
明白了,原来socket的一般流程就是这样写的,不过这个程序还不够完美,期待中……
5 楼 zyy571137 2010-09-07  
有些东西没关闭哦。
4 楼 happycredit 2009-03-07  
麻烦把通信的流程说说吧,看得不太懂,谢谢
2 楼 liudaoru 2008-11-27  
java socket与 c socket通讯的问题:http://topic.csdn.net/t/20041229/18/3686586.html#
1 楼 liudaoru 2008-11-27  
可以看出这是阻塞式的处理流程,客户端和服务器端的接受和发送必须保持一致。

相关推荐

Global site tag (gtag.js) - Google Analytics