java socket编程—单客户端与服务器通信

 实现简单的服务器程序

package Socket;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class EchoServer {

	public static void main(String[] args) {
		try {
			//建立服务器端Socket,监听8189端口
			ServerSocket s = new ServerSocket(8189);
			//等待客户端的访问
			Socket incoming = s.accept();
			try{
                //从“客户端”Socket对象读字节流
				InputStream inStream = incoming.getInputStream();
                //向“客户端”Socket对象写字节流
				OutputStream outStream = incoming.getOutputStream();
		        //将读出来的数据封装成Scanner对象
				Scanner in = new Scanner(inStream);
                //封装输出流
				PrintWriter out = new PrintWriter(outStream,true);
                                     
                //接收到客户端的请求,输出"Hello! Enter Bye to exit."				
				out.println("Hello! Enter BYE to exit.");
				
		       //解析客户端的输入,然后做出回应
				boolean done = false;
				while(!done&&in.hasNext())
				{
					String line = in.nextLine();
					out.println("Echo:"+line);
					if(line.trim().equals("BYE")) done=true;
				}
			}
			finally{
                //关闭客户端的Socket
				incoming.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

然后在cmd下 使用telnet 127.0.0.1 8189 进行测试。

1.ServerSocket(int port)

创建一个监控端口的服务器Socket

2.Socket accept() 等待连接。

该方法阻塞当前线程直到建立连接为止。该方法返回一个Socket对象。程序可以通过这个对象与连接中的客户端进行通信。

3.void close()

关闭服务器套接字

posted @ 2011-10-05 11:47  梦见舟  阅读(237)  评论(0编辑  收藏  举报