本文总结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();
}
}
}
}