您的位置:首页 > 其它

初识Socket&ServerSocket

2014-08-22 11:49 302 查看
一开始自己编写,怎么都不成功,仔细对比了教程的,才发现问题,注意readLine()方法,没有输入,会一直等待。。。

package socketpts;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class TalkClient
{
	public static void main(String[] args) throws UnknownHostException, IOException
	{
		try
		{
			Socket socket = new Socket("127.0.0.1", 4700);
			BufferedReader localInput = new BufferedReader(new InputStreamReader(System.in));
			PrintWriter toServer = new PrintWriter(socket.getOutputStream());
			BufferedReader fromServer = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			String localLine;
			localLine = localInput.readLine();
			while(!localLine.equals("bye"))
			{
				toServer.println(localLine);
				toServer.flush();
				System.out.println("Client: " + localLine);
				// 等待来自服务器端的消息
				System.out.println("Server: " + fromServer.readLine());
				localLine = localInput.readLine();
			}
			toServer.close();
			fromServer.close();
			socket.close();
		}
		catch (Exception e)
		{
			System.out.println("Error" + e);
		}
	}
}


package socketpts;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class TalkServer
{
	public static void main(String[] args)
	{
		try
		{
			ServerSocket serversocket = null;
			try
			{
				serversocket = new ServerSocket(4700);
			}
			catch (Exception e)
			{
				System.out.println("can not listen to:" + e);
			}
			Socket socket = null;
			try
			{
				socket = serversocket.accept();
			}
			catch (Exception e)
			{
				System.out.println("Error:" + e);
			}
			String localLine;
			BufferedReader fromClient = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			PrintWriter toClient = new PrintWriter(socket.getOutputStream());
			BufferedReader localInput = new BufferedReader(new InputStreamReader(System.in));
			// 执行一次之后再不执行
			System.out.println("Client: " + fromClient.readLine());
			localLine = localInput.readLine();
			while(!localLine.equals("bye"))
			{
				toClient.println(localLine);
				toClient.flush();
				System.out.println("Server: " + localLine);
				// 等待来自客户端的消息
				System.out.println("Client:" + fromClient.readLine());
				localLine = localInput.readLine();
				
			}
			fromClient.close();
			toClient.close();
			socket.close();
			serversocket.close();
		}
		catch (Exception e)
		{
			System.out.println("Error" + e);
		}
	}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: