//从客户端接收信息并打印到控制台
public class TcpTest {
//客户端
@Test
public void client() throws IOException {
InetAddress inet = InetAddress.getByName("127.0.0.1");
Socket socket = new Socket(inet,8899);
OutputStream outputStream = socket.getOutputStream();
outputStream.write("client: helloworld".getBytes());
outputStream.close();
socket.close();
}
//服务器
@Test
public void serve() throws IOException {
//创建服务器端的ServeSocket,指明自己的端口号
ServerSocket serverSocket = new ServerSocket(8899);
//接收来自客户端的Socket
Socket accept = serverSocket.accept();
//获得输入流
InputStream inputStream = accept.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
char[] buffer = new char[1024];
int length;
while((length = inputStreamReader.read(buffer))!=-1){
String str = new String(buffer);
System.out.println(str);
}
System.out.println("来自客户端: "+ accept.getInetAddress());
serverSocket.close();
inputStream.close();
inputStreamReader.close();
accept.close();
}
···
//从客户端接受文件并保存到本地
public class TcpTest2 {
@Test
public void client(){
try {
InetAddress localhost = InetAddress.getByName("localhost");
Socket socket = new Socket(localhost, 8899);
OutputStream outputStream = socket.getOutputStream();
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
File file = new File("C:\\Users\\yuanqi\\IdeaProjects\\newTest\\src\\IO\\fox.jpg");
InputStream inputStream = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
byte[] buffer = new byte[1024];
int length;
while((length = bufferedInputStream.read(buffer))!=-1){
bufferedOutputStream.write(buffer,0,length);
}
System.out.println("文件已传输");
bufferedInputStream.close();
bufferedOutputStream.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void Serve() throws IOException {
try {
ServerSocket serverSocket = new ServerSocket(8899);
Socket accept = serverSocket.accept();
InputStream inputStream = accept.getInputStream();
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
File file = new File("C:\\Users\\yuanqi\\IdeaProjects\\newTest\\src\\IO\\fox-save.jpg");
FileOutputStream fileOutputStream = new FileOutputStream(file);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
byte[] buffer = new byte[1024];
int length;
while((length = bufferedInputStream.read(buffer))!=-1){
bufferedOutputStream.write(buffer,0,length);
}
System.out.println("文件接收成功!");
bufferedInputStream.close();
bufferedOutputStream.close();
accept.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
···
//从客户端发送文件到服务端,保存并返回”发送成功给客户端
public class TcpTest3 {
@Test
public void client(){
try {
java.net.InetAddress localhost = InetAddress.getByName("localhost");
Socket socket = new Socket(localhost, 8899);
OutputStream outputStream = socket.getOutputStream();
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
File file = new File("C:\\Users\\yuanqi\\IdeaProjects\\newTest\\src\\IO\\fox.jpg");
InputStream inputStream = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
byte[] buffer = new byte[1024];
int length;
while((length = bufferedInputStream.read(buffer))!=-1){
bufferedOutputStream.write(buffer,0,length);
}
//·····························································结束传输
socket.shutdownOutput();
System.out.println("文件已传输");
//接受来自服务器的反馈
InputStream inputStream1 = socket.getInputStream();
BufferedInputStream bufferedInputStream1 = new BufferedInputStream(inputStream1);
InputStreamReader inputStreamReader = new InputStreamReader(bufferedInputStream1);
char[] buffer1 = new char[1024];
int length1;
while((length1 = inputStreamReader.read(buffer1))!=-1) {
String s = new String(buffer1, 0, length1);
System.out.println(s);
}
bufferedInputStream.close();
bufferedInputStream1.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void Serve() throws IOException {
try {
ServerSocket serverSocket = new ServerSocket(8899);
Socket accept = serverSocket.accept();
InputStream inputStream = accept.getInputStream();
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
File file = new File("C:\\Users\\yuanqi\\IdeaProjects\\newTest\\src\\IO\\fox-save.jpg");
FileOutputStream fileOutputStream = new FileOutputStream(file);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
byte[] buffer = new byte[1024];
int length;
while((length = bufferedInputStream.read(buffer))!=-1){
bufferedOutputStream.write(buffer,0,length);
}
//服务器给出反馈
OutputStream outputStream = accept.getOutputStream();
BufferedOutputStream bufferedOutputStream1 = new BufferedOutputStream(outputStream);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(bufferedOutputStream1);
outputStreamWriter.write("服务器: 图片已接收");
// bufferedOutputStream1.write("服务器: 图片已接收".getBytes());
outputStreamWriter.close();
bufferedInputStream.close();
bufferedOutputStream.close();
accept.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
···
public class UdpTest {
@Test
public void sender() throws IOException {
DatagramSocket datagramSocket = new DatagramSocket();
String str = new java.lang.String("通过Udp发送的数据包");
byte[] bytes = str.getBytes();
InetAddress localhost = InetAddress.getLocalHost();
DatagramPacket datagramPacket = new DatagramPacket(bytes,0,bytes.length,localhost,8899);
datagramSocket.send(datagramPacket);
datagramSocket.close();
}
@Test
public void receiver() throws IOException {
DatagramSocket socket = new DatagramSocket(8899);
byte[] bytes = new byte[1024];
DatagramPacket packet = new DatagramPacket(bytes, 0, bytes.length);
socket.receive(packet);
System.out.println(new String(bytes,0,bytes.length));
}
···
//URL 统一资源定位符
import java.net.MalformedURLException;
import java.net.URL;
public class URLTest {
public static void main(String[] args) throws MalformedURLException {
URL url = new URL("localhost");
System.out.println(url.getProtocol());//获取协议名
System.out.println(url.getHost());//获取主机名
System.out.println(url.getPort());//获取端口号
System.out.println(url.getPath());//获取文件路径
System.out.println(url.getFile());//获取文件名
System.out.println(url.getQuery());//获取URL查询名
}
}