封装好的获取地址
InetAddress it=InetAddress.getByName("YY");
System.out.println(it.getAddress());
System.out.println(it.getHostAddress());
System.out.println(it.getHostName());
UDP
1、持续对话
用runable实现 ;一个代码段一个类
package DatagramSocket;
import java.io.IOException;
import java.net.*;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
MyRunnable1 m1 = new MyRunnable1();
new Thread(m1).start();
Scanner sc = new Scanner(System.in);
byte[] bytes = new byte[1024];
try {
while (true){
String str = sc.next();
bytes = ("Y:"+str).getBytes();
DatagramSocket socket = new DatagramSocket();
DatagramPacket packet = new DatagramPacket(bytes,bytes.length, InetAddress.getByName("YY"),8888);
socket.send(packet);
if (str.equals("y")){
break;
}
}
} catch (SocketException e) {
throw new RuntimeException(e);
} catch (UnknownHostException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
package DatagramSocket;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class Demo1 {
public static void main(String[] args) {
MyRunnable m = new MyRunnable();
new Thread(m).start();
try {
byte[] bytes = new byte[1024];
DatagramSocket socket = new DatagramSocket(8888);
DatagramPacket packet = new DatagramPacket(bytes,1024);
byte[] data = packet.getData();
while (true){
socket.receive(packet);
String str = new String(data,0,packet.getLength());
if (str.equals("y")){
break;
}
else {
System.out.println(str);
}
}
} catch (SocketException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
package DatagramSocket;
import java.io.IOException;
import java.net.*;
import java.util.Scanner;
public class MyRunnable implements Runnable{
@Override
public void run() {
Scanner sc = new Scanner(System.in);
byte[] bytes = new byte[1024];
try {
while (true){
String str = sc.next();
bytes = str.getBytes();
DatagramSocket socket = new DatagramSocket();
DatagramPacket packet = new DatagramPacket(bytes,bytes.length, InetAddress.getByName("YY"),6666);
socket.send(packet);
if (str.equals("y")){
break;
}
}
} catch (SocketException e) {
throw new RuntimeException(e);
} catch (UnknownHostException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
package DatagramSocket;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class MyRunnable1 implements Runnable{
@Override
public void run() {
try {
byte[] bytes = new byte[1024];
DatagramSocket socket = new DatagramSocket(6666);
DatagramPacket packet = new DatagramPacket(bytes,1024);
byte[] data = packet.getData();
while (true){
socket.receive(packet);
String str = new String(data,0,packet.getLength());
if (str.equals("y")){
break;
}
else {
System.out.println(str);
}
}
} catch (SocketException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
用Thread实现
找不到了;找到了在来补上
2、自己和自己玩(有bug)
import com.sun.xml.internal.ws.wsdl.writer.document.http.Address;
import java.io.IOException;
import java.net.*;
import java.util.Scanner;
/**
* @author: zyd
* @date: 2022/8/9 10:57
*/
public class wlbc {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
byte[] b = new byte[1024];
DatagramSocket socket = new DatagramSocket(9898);
new Thread(){
@Override
public void run() {
while (true){
try {
// socket.connect(new InetSocketAddress(8888));
DatagramPacket packet=new DatagramPacket(b,b.length);
socket.receive(packet);//接收
byte[] t=packet.getData();
String s=new String(t,0,t.length);
System.out.println(s);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}.start();
while (true) {
String s = sc.next();
System.out.println("1"+s);
byte[] bytes = s.getBytes();
DatagramPacket packet = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("192.168.43.3"), 8888);
// packet.setData(bytes);
socket.send(packet);
}
}
}
TCP(把文件复制到另一个地方)
注意事项:切记,流是对文件的操作,复制过来后也要起一个文件名称
服务器
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @author: zyd
* @date: 2022/8/9 14:18
*/
public class tcpa {
public static void main(String[] args) throws IOException {
ServerSocket socket=new ServerSocket(9898);
Socket accept = socket.accept();
InputStream is=accept.getInputStream();
File f=new File("D:\\temp\\fangwen\\mao.jpg");
FileOutputStream os=new FileOutputStream(f);
int temp=-1;
byte[] b=new byte[1024];
while((temp=is.read(b))!=-1){
os.write(b,0,temp);
}
os.close();
is.close();
accept.close();
}
}
客户端
import java.io.*;
import java.net.InetSocketAddress;
import java.net.Socket;
/**
* @author: zyd
* @date: 2022/8/9 14:30
*/
public class tcpb {
public static void main(String[] args) throws IOException {
FileInputStream f=new FileInputStream("E:\\Desktop\\壁纸\\猫.jfif");
Socket socket=new Socket("10.11.2.88",9898);
OutputStream os=socket.getOutputStream();
byte[] b=new byte[1024];
int temp=0;
while ((temp=f.read(b))!=-1){
os.write(b,0,temp);
}
os.close();
socket.close();
}
}