Java tcp聊天

package p4.tcp;

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;

public class TCPClientDemo {

	public static void main(String[] args) throws IOException {
		//客户端发数据到服务端
		
				/*
				 * Tcp传输,客户端建立的过程
				 * 1 创建tcp客户端socket服务。使用的是Socket对象
				 *  建议该对象一创建就明确目的地,要连接的主机
				 * 2 如果连接建立成功 说明数据传输通道已建立
				 * 	该通道是socket流 是底层建立好的 既然是流说明这里 即有输入 又有输出
				 *  想要输入或输出流对象 可以找Socket来获取
				 *  可以通过getOutputStream() 和getInputStream()来获取两个字节流
				 * 3 使用输出流 将数据写出
				 * 4 关闭资源
				 */
				
				//1 创建客户端服务
				Socket socket=new Socket("10.194.43.59", 10002);
			
				
				//获取scoket流中的输出流
				OutputStream out=socket.getOutputStream();
				
				//使用输出流将指定的数据写出去
				String ip=socket.getInetAddress().getHostAddress();
			
				out.write("演示:哥们又来了".getBytes());
				 
				//关闭资源
				socket.close();

	}

}


package p4.tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

public class TCPServerDemo {
	public static void main(String[] args) throws IOException, IOException {
		//服务端接收客户端 发送过来的 数据 并打印在控制台上
		
		/*
		 * 建立tcp服务端的数据
		 * 1 创建服务端socket服务 通过ServerSocket对象
		 * 2 服务端必须对外提供一个端口 否则客户端 无法连接
		 * 3 获取连接过来的客户端对象
		 * 4 通过客户端对象 获取socket流读取客户端发来的数据
		 * 5 关闭资源 关客户端 关服务端
		 * 
		 */
		
		//1 创建服务端对象
		ServerSocket ss=new ServerSocket(10002);
	
		//2 获取连接过来的客户端对象
		Socket s=ss.accept();
		
		//3 通过socket对象获取输入流 要读取客户端发来的数据 
		InputStream in=s.getInputStream();
		
		String ip=s.getInetAddress().getHostAddress();
		
		byte[]buf=new byte[1024];
		int len=in.read(buf);
		String text=new String(buf, 0, len);
		System.out.println(ip+":"+text);
		
		s.close();
		ss.close();
	}

}


package p4.tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class TCPClientDemo2 {

	public static void main(String[] args) throws IOException {
		//客户端发数据到服务端
		
				/*
				 * Tcp传输,客户端建立的过程
				 * 1 创建tcp客户端socket服务。使用的是Socket对象
				 *  建议该对象一创建就明确目的地,要连接的主机
				 * 2 如果连接建立成功 说明数据传输通道已建立
				 * 	该通道是socket流 是底层建立好的 既然是流说明这里 即有输入 又有输出
				 *  想要输入或输出流对象 可以找Socket来获取
				 *  可以通过getOutputStream() 和getInputStream()来获取两个字节流
				 * 3 使用输出流 将数据写出
				 * 4 关闭资源
				 */
				
				Socket socket=new Socket("10.194.43.59", 10002);
			
			
				OutputStream out=socket.getOutputStream();
				
				String ip=socket.getInetAddress().getHostAddress();
			
				out.write("演示:哥们又来了".getBytes());
			//读取服务端返回的数据 要使用socket读取流
				InputStream in=socket.getInputStream();
				byte[]buf=new byte[1024];
				
				int len=in.read(buf);
				
				String text=new String(buf, 0, len);
				System.out.println(text);
				
				socket.close();
			
				
	}

}



package p4.tcp;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

public class TCPServerDemo2 {
	public static void main(String[] args) throws IOException, IOException {
		//服务端接收客户端 发送过来的 数据 并打印在控制台上
		
		/*
		 * 建立tcp服务端的数据
		 * 1 创建服务端socket服务 通过ServerSocket对象
		 * 2 服务端必须对外提供一个端口 否则客户端 无法连接
		 * 3 获取连接过来的客户端对象
		 * 4 通过客户端对象 获取socket流读取客户端发来的数据
		 * 5 关闭资源 关客户端 关服务端
		 * 
		 */
		
		//1 创建服务端对象
		ServerSocket ss=new ServerSocket(10002);
	
		//2 获取连接过来的客户端对象
		Socket s=ss.accept();//阻塞式 没有客户端连入则等待
		
		//3 通过socket对象获取输入流 要读取客户端发来的数据 
		InputStream in=s.getInputStream();
		
		String ip=s.getInetAddress().getHostAddress();
		
		byte[]buf=new byte[1024];
		int len=in.read(buf);
		String text=new String(buf, 0, len);
		System.out.println(ip+":"+text);
		
		
		//使用客户端socket对象的输出流给客户端返回数据
		OutputStream out=s.getOutputStream();
		out.write("收到".getBytes());
		
		s.close();
		ss.close();
	}

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值