网络编程

UDP:1,每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。          2,UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。

          3,UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方TCP:1,面向连接的协议,在socket之间进行数据传输之前必然要建立连接,所以在TCP中需要连接时间。          2,TCP传输数据大小限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大的数据。          3,TCP是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。

TCP就像打电话,UDP就像发短信。

UDP

import java.net.*;
import java.io.*;
class Send //发送端
{
	public static void main(String[] args) throws SocketException,IOException
	{
		DatagramSocket ds=new DatagramSocket();

               //数据封装成包,
		BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
		String s=bf.readLine();
		byte[] b=s.getBytes();
		DatagramPacket dp=new DatagramPacket(b,b.length,InetAddress.getByName("172.16.99.99"),12000);
		ds.send(dp);
		ds.close();
	}
}
TCP
import java.net.*;
import java.io.*;
class Test //发送端
{
	public static void main(String[] args) throws SocketException,IOException
	{
		Socket s=new Socket("172.16.99.99",12000);

		OutputStream out=s.getOutputStream();// 返回此套接字的输出流。
		BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(out));
		bw.write("hello!!");
		bw.flush();
		//bw.close(); 若这个关闭了,则关闭了Socket()

		InputStream in=s.getInputStream();
		byte[] b=new byte[1024];
		int len=in.read(b);
		System.out.println(new String(b,0,len));
		s.close();
	}
}

import java.io.*;
import java.net.*;
class Rec //接收端
{
	public static void main(String[] args)throws Exception
	{
		ServerSocket ss=new ServerSocket(12000);
		Socket s=ss.accept();
		InputStream in=s.getInputStream();
		BufferedInputStream bf=new BufferedInputStream(in);
		byte[] b=new byte[1024];
		int len=bf.read(b);
		System.out.println(new String(b,0,len));

		OutputStream out=s.getOutputStream();
		out.write("how are you!".getBytes());
		//ss.close();
	}
}


tcp模拟浏览器向 Tomcat服务器发送请求

import java.net.*;
import java.io.*;
//tomcat就是根据tcp
class Test //发送端
{
	public static void main(String[] args) throws SocketException,IOException
	{
		Socket s=new Socket("172.16.99.99",8080);

		PrintWriter out=new PrintWriter(s.getOutputStream(),true);
		 
		out.println("GET /myweb/demo.html HTTP/1.1");
		out.println("Accept: */*");
		out.println("Accept-Language: zh-cn");
		out.println("Host:172.16.99.99:12000");
		out.println("Connection:Keep-Alive");

		out.println();
		out.println();
		BufferedReader bufr=new BufferedReader(new InputStreamReader(s.getInputStream()));

		String line=null;
		while((line=bufr.readLine())!=null)
			System.out.println(line);
		s.close();
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值