【JavaSE】网络编程---UDP丶TCP

一.UDP

UDP:面向无连接通信(发送端不需接收端确认是否能接收),数据不安全,效率高

1.常用方法
InetAddress
  • static InetAddress getLocalHost() 获取本地主机
  • static InetAddress getByName(String host) 根据域名或IP获取主机
  • String getHostName() 获取主机名
  • String getHostAddress() 获取IP地址
DatagramPacket
  • DatagramPacket(byte[] buf, int length) 构造缓冲区接收读取指定长度的数据包
  • int getLength() 获取接收的数据包的大小
  • InetAddress getAddress() 获取发送方的IP地址
  • int getPort() 获取发送方的端口号
  • DatagramPacket(byte[] buf, int length, InetAddress address, int port) 构造发送的数据包,并设置接受者的IP地址和端口
DatagramSocket
  • DatagramSocket() 空构造
  • DatagramSocket(int port) 创建指定接受者端口的套接字对象
  • void send(DatagramPacket p) 发送数据包
  • void receive(DatagramPacket p) 接收数据包
  • void close() 关闭套接字
2.接收方
	/* 测试时应先启动接收方,再启动发送方 */

	//用于接收数据的缓冲区
	byte[] data=new byte[1024];
	
	//创建数据包对象
	DatagramPacket dp=new DatagramPacket(data, data.length);
	
	//创建套接字对象,设置接收方端口为3000
	DatagramSocket ds=new DatagramSocket(3000);
	
	//接收数据包
	ds.receive(dp);
	
	//获取发送者的IP地址
	String senderIP=dp.getAddress().getHostAddress();
	
	//获取发送者的端口号
	int senderPort=dp.getPort();
	
	//获取数据包的大小
	int length=dp.getLength();

	System.out.println(senderIP+":"+senderPort+"..."+new String(data,0,length));
	
	//关闭资源
	ds.close();
3.发送方
	String msg="你好";
	byte[] data=msg.getBytes();
	
	//接收者IP地址
	InetAddress receiverIP=InetAddress.getByName("127.0.0.1");
	
	//接收者端口号
	int receiverPort=3000;
	
	//创建数据包
	DatagramPacket dp=new DatagramPacket(data, data.length,receiverIP,receiverPort);
	
	//创建套接字对象
	DatagramSocket ds=new DatagramSocket();
	
	//发送数据包
	ds.send(dp);
	
	//关闭资源
	ds.close();

二.TCP

TCP:面向有连接通信,三次握手,数据安全,效率较低,区分客户端与服务器端

1.常用方法
Socket
  • Socket(String host, int port) 创建客户端的套接字对象,并设置需要访问的服务器的IP和端口
  • OutputStream getOutputStream() 获取输出流,用于客户端发送数据或服务器端响应数据
  • InputStream getInputStream() 获取输入流,用于读取客户端发送的数据或服务器端响应的数据
    -void close() 关闭套接字
ServerSocket
  • ServerSocket(int port) 创建服务器端的套接字对象,并绑定端口号
  • Socket accept() 监听并接受客户端的套接字
  • void close() 关闭套接字
2.服务器端
	//创建服务器端的套接字对象,并绑定端口号
	ServerSocket server=new ServerSocket(4000);
	
	//监听并接受客户端的套接字
	Socket socket= server.accept();
	
	//获取客户端发送数据的输入流
	InputStream in=socket.getInputStream();
	
	byte[] data=new byte[1024];
	
	//读取客户端发送的数据
	int len=in.read(data);
	String msg=new String(data,0,len);
	System.out.println(msg);
	if(msg.equals("我要登录")){
		//获取服务器端响应给客户端的输出流
		OutputStream out=socket.getOutputStream();
		//输出数据到客户端
		out.write("登录成功".getBytes());
	}
	
	//关闭资源
	socket.close();
	server.close();
3.客户端
	//创建客户端的套接字对象,并设置需要访问的服务器的IP和端口
	Socket socket=new Socket("127.0.0.1", 4000);
	
	//获取发送数据到服务器端的输出流
	OutputStream out= socket.getOutputStream();
	
	//发送数据到服务器端
	out.write("我要登录".getBytes());
	
	//获取服务器端响应返回数据的输入流
	InputStream in=socket.getInputStream();
	byte[] data=new byte[1024];
	
	//读取服务器端返回的数据
	int len=in.read(data);
	
	System.out.println(new String(data,0,len));
	
	//关闭资源
	socket.close();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目名称:Java中的简单游戏和应用程序 项目简介: 简单游戏和应用程序是一个Java项目。该项目包含23个不同的Java制作的应用程序和游戏。项目中还包括记事本、拼图等简单应用程序。这是一个单框架程序,你可以选择并运行你希望运行的程序。要运行此项目,你必须在系统上安装JDK路径。 项目简介: 这是一个简单的游戏和应用程序集合,由不同的Java应用程序组成,使该项目独特。你可以选择要运行的程序。如果你想运行记事本,只需在应用程序中点击选项。在记事本中,你可以轻松进行写作,可以处理任何你想要的文本样式。 此外,该项目还包括游戏和测验,例如井字棋和拼图游戏。项目中还提供了字数统计功能。你可以输入任意多的文本,之后可以统计段落中的字数。你还可以玩数独和太空侵略者游戏。不仅如此,你还可以在这个项目中运行不同的应用程序。 项目功能: 记事本:进行文本写作和格式处理。 拼图游戏:挑战你的智力。 井字棋:经典的两人游戏。 字数统计:统计输入文本的字数。 数独:经典的数字填空游戏。 太空侵略者:经典的射击游戏。 其他应用程序和游戏:总计23个不同的程序。 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值