java夯实基础-网络编程

本文总结TCP、UDP和URL三种网络编程方法

一、TCP

package com.wllfengshu.test;

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

public class TestTCPClient {
	private static Socket socket;
	private static OutputStream outputStream;
	private static InputStream inputStream;

	public static void main(String[] args) {
		try {
			System.out.println("我是客户端...");
			socket = new Socket("127.0.0.1",8866);
			outputStream = socket.getOutputStream();
			outputStream.write("我是客户端发送的数据".getBytes());
			outputStream.flush();//冲刷
			
			inputStream = socket.getInputStream();
			byte[] b=new byte[1024];
			inputStream.read(b);
			System.out.println(new String(b));
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally{
			try {
				outputStream.close();
				socket.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
package com.wllfengshu.test;

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

public class TestTCPServer {
	private static ServerSocket serverSocket;
	private static InputStream inputStream;
	private static Socket accept;
	private static OutputStream outputStream;

	public static void main(String[] args) {
		try {
			System.out.println("我是服务器...");
			serverSocket = new ServerSocket(8866);
			accept = serverSocket.accept();//等待 接收请求
			inputStream = accept.getInputStream();
			byte[] b=new byte[1024];
			inputStream.read(b);
			System.out.println(new String(b));
			
			outputStream = accept.getOutputStream();
			outputStream.write("我是服务器端发送的数据".getBytes());
			outputStream.flush();
		} catch (IOException e) {
			e.printStackTrace();
		} finally{
			try {
				inputStream.close();
				accept.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

二、UDP

package com.wllfengshu.test;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class TestUDPClient {
	private static DatagramSocket datagramSocket;
	private static DatagramPacket sdp;
	private static DatagramPacket dp;

	public static void main(String[] args) {
		try {
			datagramSocket = new DatagramSocket();
			byte[] a="我是客户端发送的数据".getBytes();
			sdp = new DatagramPacket(a, a.length,InetAddress.getByName("127.0.0.1"),9778);
			datagramSocket.send(sdp);
			
			byte[] b=new byte[1024];
			dp = new DatagramPacket(b, 1024);
			datagramSocket.receive(dp);//接收数据
			System.out.println(new String(dp.getData(),dp.getOffset(),dp.getLength()));
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
package com.wllfengshu.test;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

public class TestUDPServer {
	private static DatagramSocket datagramSocket;
	private static DatagramPacket dp;
	private static DatagramPacket sdp;

	public static void main(String[] args) {
		try {
			datagramSocket = new DatagramSocket(9778);
			byte[] b=new byte[1024];
			dp = new DatagramPacket(b, 1024);//用于接收
			datagramSocket.receive(dp);//接收数据
			InetAddress caddres=dp.getAddress();
			int port=dp.getPort();
			System.out.println("接收到的客户端信息:"+caddres+port+new String(dp.getData(),dp.getOffset(),dp.getLength()));
			
			byte[] a="服务器返回的数据".getBytes();
			sdp = new DatagramPacket(a, a.length,caddres,port);
			datagramSocket.send(sdp);
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally{
			datagramSocket.close();
		}
	}
}

三、URL

package com.wllfengshu.test;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class TestURL {
	private static URL url;
	private static URLConnection urlConnection;
	private static InputStream inputStream;

	public static void main(String[] args) {
		try {
			url = new URL("https://www.baidu.com/");
			urlConnection = url.openConnection();
			System.out.println(url.getHost());//获取主机名
			System.out.println(url.getDefaultPort());//获取端口
			System.out.println(urlConnection.getContentType());
			
			byte[] b=new byte[1024];
			inputStream = urlConnection.getInputStream();
			inputStream.read(b);
			System.out.println(new String(b));
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally{
			try {
				inputStream.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}	




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值