TCP通讯

注意read、readLine方法时阻塞式的,所以注意newLine添加换行
/*
建立一个文本转换器,
客户端给服务端发送文本,服务端会将文本进行转换,返回给客户端
分析:
客户端:
1、既然操作设备上的数据,就可以使用IO技术。
	源:键盘录入。
	目的:网络输出流
	而且操作是文本数据,可以使用字符流。
*/
import java.net.*;
import java.io.*;
import java.lang.*;
import java.lang.Exception;
class  TransClient
{
	public static void main(String[] args) throws Exception
	{
		Socket s = new Socket("222.49.250.147",10001);
		//定义读取键盘信息
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		//定义目的,将数据写入到socket输出流,发给服务端
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
		String line = null;
		while((line = br.readLine()) != null)
		{
			bw.write(line);
			bw.newLine();
			bw.flush();
			if("over".equals(line))
				break;
		}

		//定义一个socket读取流,读取服务器返回的额值。
		BufferedReader brServer = new BufferedReader(new InputStreamReader(s.getInputStream()));
		line = null;
		while((line = brServer.readLine()) != null)
		{
			System.out.println(line);
		}

		brServer.close();
		bw.close();
	}
}
/*
将读取的字母转换成大写发送到客户端。
*/
class TransServer
{
	public static void main(String [] args) throws Exception
	{
		ServerSocket ss = new ServerSocket(10001);
		Socket s = ss.accept();
		String ip = s.getInetAddress().getHostAddress();
		System.out.println(ip + "is connected");
		//定义一个流,用于读取客户端信息
		BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); 
		//处理输出,返回到客户端
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
		String line = null;
		while((line = br.readLine()) != null)
		{
			System.out.println(line);
			bw.write(line.toUpperCase());
			bw.newLine();
			bw.flush();
		}

		bw.close();
		br.close();
	}
}


posted @ 2015-01-25 15:54  静以养身 俭以养德  阅读(173)  评论(0编辑  收藏  举报