网络编程之TCP与UDP

1 篇文章 0 订阅
1 篇文章 0 订阅

网络编程之TCP与UDP

两者间的区别

1.TCP:基于安全的点对点传输协议
点对点:接收端、发送端,建立安全连接;
2.UDP:基于广播形式的传播,一对多非安全传输;
3.对两者的运用在以下代码中会以注解的形式呈现。

对IO流要熟悉掌握

1.字节流:(rander/writer);
2.字符流:(inputStream/outputStream);
3.以及他们的父类。

TCP(发送端)

public static void main(String[] args) {
try {
Socket socket = new Socket(“192.168.8.194”, 8989);
System.out.println(“已于服务端建立联系”);
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);

		OutputStream os = socket.getOutputStream();
		
		//这里不能够使用bufferedWriter
		//如果使用,在运行过程中会报错,
		//具体原因可看低层代码。(提示”换行符符“)
		PrintWriter pw = new PrintWriter(os);
		
		BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
		//inputStream不能被实例化
		
		while(true){
			System.out.println("向服务端发送消息:");
			String msg = br1.readLine();
			if(msg.equals("傻逼")){
				break;
			}
			pw.println(msg);
			pw.flush();	
			
			
			//读取消息	
			 msg = br.readLine();
	     	System.out.println("从服务端来的消息:"+msg);
		}	
	} catch (UnknownHostException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

}

TCP( 接收端)

public static void main(String[] args) {
	
	try {
		ServerSocket server = new ServerSocket(8989);
		
		Socket socket = server.accept();
		System.out.println("已于客户端建立联系");
		
		InputStream is = socket.getInputStream();
		InputStreamReader isr = new InputStreamReader(is);
		BufferedReader br = new BufferedReader(isr);
		 
		OutputStream os = socket.getOutputStream();
		//这里不能够使用bufferedWriter
		//如果使用,在运行过程中会报错,
		//具体原因可看低层代码。(提示”换行符符“)
	    PrintWriter pw = new PrintWriter(os);
		
		BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
		
		//inputStream不能被实例化
				
		//发送消息
		while(true) {
			//接受的消息
			String msg = br.readLine();
			System.out.println("从客户端发来的消息:"+msg);
			
			
		System.out.println("向客户端发送消息:");
		 msg = br1.readLine();
		if(msg.equals("傻逼")){
			break;
		}
		pw.println(msg);
		pw.flush();					
		}
		pw.close();
		br1.close();
		br.close();
					
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

}
public static void main(String[] args) {

	try {
		ServerSocket server = new ServerSocket(8989);
		
		Socket socket = server.accept();
		System.out.println("已于客户端建立联系");
		
		InputStream is = socket.getInputStream();
		InputStreamReader isr = new InputStreamReader(is);
		BufferedReader br = new BufferedReader(isr);
		 
		OutputStream os = socket.getOutputStream();
		//这里不能够使用bufferedWriter
		//如果使用,在运行过程中会报错,
		//具体原因可看低层代码。(提示”换行符符“)
	    PrintWriter pw = new PrintWriter(os);
		
		BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
		
		//inputStream不能被实例化
	
		
		//发送消息
		while(true) {
			//接受的消息
			String msg = br.readLine();
			System.out.println("从客户端发来的消息:"+msg);
			
			
		System.out.println("向客户端发送消息:");
		 msg = br1.readLine();
		if(msg.equals("傻逼")){
			break;
		}
		pw.println(msg);
		pw.flush();
					
		}
		pw.close();
		br1.close();
		br.close();
		
		
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

}

UDP(发送端)

public class Sender {
public static void main(String[] args) {
try {
System.out.println(“发送端__”);
//准备数据
System.out.println(“请输入你要发送的数据”);
Scanner sc = new Scanner(System.in);

		String msg = sc.nextLine();
		
		//准备数据包
		byte [] by = msg.getBytes();
	//与接受端建立联系 	
		InetAddress addr = InetAddress.getByName("228.7.6.7");
		
		DatagramPacket dp = new DatagramPacket(by, by.length, addr, 8989);
		
		//发送数据到接收端
	//	DatagramSocket ds = new DatagramSocket();
		
		//使用地址蔟,发送数据报/包
		MulticastSocket ms = new MulticastSocket();

		ms.joinGroup(addr);
		
		ms.send(dp);
		System.out.println("数据发送成功");
		ms.close();
		

		//ds.send(dp);
		//ds.close();
			
	} catch (UnknownHostException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (SocketException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

}

UDP(接收端)

public static void main(String[] args) {

	try {
		//建立端口
		System.out.println("_________接收端__________");
	//	DatagramSocket ds = new DatagramSocket(8989);
		   MulticastSocket ms = new MulticastSocket(8989);
		   InetAddress addr = InetAddress.getByName("228.7.6.7");
	
		   ms.joinGroup(addr);	      
		
		//接受数据包
			
		byte [] buff = new byte[1024];//创建数组作为接受数据包的容器
		
		//在接收端接收数据包不需要IP地址
	      DatagramPacket dp = new DatagramPacket(buff, buff.length);
	      
	  
	   
	    //  ds.receive(dp);
	      
	      //ds.close();
	      
	      
	      //使用地址簇接受数据包/报
	      ms.receive(dp);
	      ms.close();
	      
	    //从数据包/报中读取接受到的数据
	      buff =  dp.getData();
	      System.out.println("成功读取到长度为:"+"\t" + buff.length);
	      System.out.write(buff);		
	} catch (SocketException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

}

UDP的总结

一、接收端;
1.准备数据
2.创建数据包/报(DatagramPacket)
3.发送(DatagramSocket)
或则([MulticastSocket] / joinGroup(inetAddress macastaddr))
二、
接收端:
1.接受 (MulticastSocket)
2.接收到数据报
3.从数据报中读取数据

TCP的总结

一、服务端 等待接受连接请求
ServerScoker server = new ServerSocket(port);

Socket socket = server.accepet();

二、发送连接请求
Socket socket = new Socket(“IP”,port);
UDP与TCP的大致思路就是这样了,共同学习。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值