tcp的一些写法

客户端

public class TcpClient {
	public static void main(String[] args) {
		try {
			//建立一个通道,由于是客户端,所以需要绑定服务端的ip地址和端口
			Socket s=new Socket(InetAddress.getByName("19.1.0.0"),8001);
			
			InputStream ips=s.getInputStream();
			BufferedReader brNet=new BufferedReader(new InputStreamReader(ips));
			
			OutputStream ops=s.getOutputStream();
			DataOutputStream dos=new DataOutputStream(ops);
			
			//把键盘上输入的内容放进byKey中
			BufferedReader byKey=new BufferedReader(new InputStreamReader(System.in));
			while(true)
			{
			//将输入读取出来,并进行判断
				String strWord=byKey.readLine();
				if(strWord.equalsIgnoreCase("quit"))
				{
					break;
				}
				else
				{
					System.out.println("I want to say:"+strWord);
	//System.lineSeparator()这个操作主要是换行,并且可以在不同系统中实现
			dos.writeBytes(strWord+System.getProperty("line.separator"));
					
					System.out.println("Sever said:"+brNet.readLine());
				}
			}
			dos.close();
			brNet.close();
			byKey.close();
			s.close();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}

服务端

public class TcpSever2 {

	public static void main(String[] args) {
		try {
			ServerSocket ss=new ServerSocket(8001);//serversocket是一个服务器码头,需要绑定一个端口
			while(true)
			{
				Socket s=ss.accept();//运输通道,这里会发送堵塞,直到用户端发送请求;
				System.out.println("there is a client");
				new Thread(new Worker(s)).start();//打开一个新的线程,通过worker这个类来实现
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
class Worker implements Runnable{
	Socket s;
	public Worker(Socket s)
	{
		this.s=s;
	}
	public void run()
	{
		try {
			System.out.println("Server people is ready");
			
			//接受到消息之后,打开输入流和输出流动
			//对于同一个通道来说,服务端的输入流就是用户端的输出流,用户端的输入流就是服务端的输出流
			InputStream ips=s.getInputStream();
			OutputStream ops=s.getOutputStream();
			
			//bufferedready是一个包装类,能使得处理效率更加高效
			BufferedReader br=new BufferedReader(new InputStreamReader(ips));
			
			//这里定义一个输出流,是为了让客户端知道服务端已经接收到了请求,并且会给一个回馈
			DataOutputStream dos=new DataOutputStream(ops);
			while(true)
			{
				String strWord=br.readLine();
				System.out.println("client said"+strWord+":"+strWord.length());
				if(strWord.equalsIgnoreCase("quit"))
				{
					break;
				}
				String strEcho=strWord+"12138";
				
				System.out.println("server said:"+strWord+"----->"+strEcho);
				dos.writeBytes(strWord+"----->"+strEcho+System.getProperty("line.separator"));
			}
			br.close();
			dos.close();
			s.close();
		}catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值