6 at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
7 at java.net.Socket.connect(Socket.java:518)
8 at java.net.Socket.connect(Socket.java:468)
9 at java.net.Socket.
10 at java.net.Socket.
11 at com.b510.socket1703.TestClient.main(TestClient.java:19)
如果服务器端先打开服务,这时候客户端连接服务器端,出现的效果:
1 你好,客户端地址信息: /127.0.0.1 客户端通信端口号: 2800
2 i'm a server ,my name is hongten!
============================================================
2.实现单线程的聊天室
============================================================
服务器端代码:
1 package com.b510.socket1704.simplechatroom;
2
3 import java.io.*;
4 import java.net.Socket;
5 import java.net.ServerSocket;
6 import java.net.SocketException;
7
8 /**
9 * 服务器端程序,在while循环中所执行的动作是:
10 * 听,说,听,说,听,说...
11 *
12 * @author Hongten
13 *
14 * @time 2012-4-29 2012
15 */
16 public class TestServer {
17 public static void main(String args[]) {
18 try {
19 //创建一个socket对象
20 ServerSocket s = new ServerSocket(8888);
21 //socket对象调用accept方法,等待连接请求
22 Socket s1 = s.accept();
23 //打开输出流
24 OutputStream os = s1.getOutputStream();
25 //封装输出流
26 DataOutputStream dos = new DataOutputStream(os);
27 //打开输入流
28 InputStream is = s1.getInputStream();
29 //封装输入流
30 DataInputStream dis = new DataInputStream(is);
31 //读取键盘输入流
32 InputStreamReader isr = new InputStreamReader(System.in);
33 //封装键盘输入流
34 BufferedReader br = new BufferedReader(isr);
35
36 String info;
38 //接受客户端发送过来的信息
39 info = dis.readUTF();
40 //打印接受的信息
41 System.out.println("对方说: " + info);
42 //如果发现接受的信息为:bye,那么就结束对话
43 if (info.equals("bye"))
44 break;
45 //读取键盘的输入流
46 info = br.readLine();
47 //写入到网络连接的另一边,即客户端
48 dos.writeUTF(info);
49 //如果服务器自己说:bye,也是结束对话
50 if (info.equals("bye"))
51 break;
52 }
53 //关闭输入流
54 dis.close();
55 //关闭输出流
56 dos.close();
57 //关闭socket对象
58 s1.close();
59 s.close();
60 } catch (SocketException e) {
61 System.out.println("网络连接异常,程序退出!");
62 } catch (IOException e) {
63 e.printStackTrace();
64 }
65 }
66 }
客户端代码:
1 package com.b510.socket1704.simplechatroom;
2
3 import java.io.*;
4 import java.net.Socket;
5 import java.net.SocketException;
6 /**
7 * 客户端程序,在while循环中所执行的动作是:
8 * 说,听,说,听,说,听....
9 * @author Hongten
10 *
11 * @time 2012-4-29 2012
12 */
13 public class TestClient {
14 public static void main(String args[]) {
15 try {
16 // 创建socket对象,指定服务器的ip地址,和服务器监听的端口号
17 // 客户端在new的时候,就发出了连接请求,服务器端就会进行处理,如果服务器端没有开启服务,那么
18 // 这时候就会找不