网络编程

13 篇文章 0 订阅
11 篇文章 0 订阅

IP:定位网络中的不同节点(电子设备:手机,电脑,路由器…)

IPV4 4个字节 32位    IPV6
特殊的IP:
192.168.0.0~192.168.255.255  局域网内部使用
127.0.0.1 本地IP
localhost 本地域名
IP和域名: DNS域名解析服务器
InetAddress 此类表示互联网协议 (IP) 地址。

端口:区分不同软件
0~65535 2个字节
统一协议下端口不能冲突
设置端口号时尽量越大越好
预留端口号:8000
常见端口号:
80: http
8080: tomcat
1521: Oracle
3306: mysql
InetSocketAddress  此类实现 IP 套接字地址(IP 地址 + 端口号)。

URL:统一资源定位符  区分不同的资源
互联网的三大基石: http  html  url
  协议:
  域名:
  端口:
  资源:
  http://www.baidu.com:80/index.html?name=zhangsan&pwd=123#a
 传输协议***: udp  tcp*****

udp

Socket套接字:传输层为应用层开辟的通道(小口子)
  不同的协议针对于Socket的实现是不同的
  传输层协议之间的区别:
  tcp: 相当于打电话  基于面向连接的  安全   基于io流传输  占用资源多,开销大,效率低   3次握手:1.请求   2.回应   3.传输
  udp: 相当于写信	     非面向连接的  只管发送 不安全   开销小,效率高  大小有限制 一般不超过60k  基于字节数组
  UDP实现Socket编程:
  	DatagramSocket:定义发送端和接收端
  	DatagramPacket:数据的包裹
  
  udp实现发送端:基本流程
  	1.DatagramSocket 指定端口  定义发送端  DatagramSocket(int port)
  	2.准备数据  ,转为字节数组
  	3.DatagramPacket 打包
  	4.发送    void send(DatagramPacket p)  从此套接字发送数据报包。 
   5.关闭资源

代码实例:

public class UdpTest { 
	public static void main(String[] args) throws IOException {
		System.out.println("发送端准备就绪");
		//定义发送端口
		DatagramSocket send=new DatagramSocket(9999);
		//准备数据,由于基于字节数组,所以传输的内容要转为字节数组
		String str="udp一号准备发送";
		byte[] arr=str.getBytes();
		//准备报过打包
		InetAddress in1=InetAddress.getLocalHost();
		DatagramPacket packet=new DatagramPacket(arr, 0,arr.length,new InetSocketAddress("in1", 9999));
		//发送
		send.send(packet);
		//关闭
		send.close();
	}
}
public class UdpReceive {
public static void main(String[] args) throws IOException {
	System.out.println("接收端准备就绪");
	//定义接收端
	DatagramSocket rec=new DatagramSocket(9999);
	//准备字节数组进行打包
	byte[] brr=new byte[1024*80];
	//打包
	DatagramPacket packet=new DatagramPacket(brr,0, brr.length);
	//接受
	rec.receive(packet);
	//处理数据
	 byte[] newBrr=packet.getData();
	 System.out.println(newBrr.length);
	 System.out.println(packet.getLength());
	 System.out.println(new String(newBrr,0,packet.getLength()));
	 //关闭
	 rec.close();
}
}

tcp

1.tcp实现客户端:基本流程
	1.定义客户端  Socket  指定服务端的ip 端口
	2.准备数据
	3.通过io读写
	4.关闭
	
2.tcp实现服务端:基本流程
  1.定义服务端  ServerSocket
  2.阻塞式监听
 	3.通过io读写
 	4.关闭

代码实例:

public class TcpTest {
	public static void main(String[] args) throws UnknownHostException, IOException {
		System.out.println("----------客户端--------");
		
	Socket client=new Socket("localhost", 8888);
	String str="哈哈";
	DataOutputStream dos=new DataOutputStream(new BufferedOutputStream(client.getOutputStream()));
	dos.writeUTF(str);
	dos.flush();
	dos.close();
	client.close();
}
}
public class ServerTcpTest {
public static void main(String[] args) throws IOException {
	System.out.println("---服务端----");
	//定义服务器端
	ServerSocket server=new ServerSocket(8888);
	//监听
	Socket client=server.accept();
	System.out.println("---监听成功-----");
	DataInputStream dis=new DataInputStream(new BufferedInputStream(client.getInputStream()));
	dis.readUTF();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值