Java.net
TCP实现文件上传
public class TcpClientDemo {
public static void main(String
[] args
) throws Exception
{
Socket socket
= new Socket("127.0.0.1",8080);
OutputStream outputStream
= socket
.getOutputStream();
FileInputStream fis
= new FileInputStream(
new File("demo.txt")
);
byte[] buffer
= new byte[1024];
int len
;
while ((len
= fis
.read(buffer
)) != -1){
outputStream
.write(buffer
,0,len
);
}
System
.out
.println("文件发送完毕");
socket
.shutdownOutput();
fis
.close();
outputStream
.close();
socket
.close();
}
}
//服务器端
public class TcpServerDemo {
public static void main(String[] args) throws Exception {
//创建服务
ServerSocket serverSocket = new ServerSocket(8080);
//监听客户端连接
Socket socket = serverSocket.accept();
//获取输入流
InputStream inputStream = socket.getInputStream();
//创建文件输出流
FileOutputStream fos = new FileOutputStream(
new File("uploadind.txt")
);
//输出IP
System.out.println("InetAddress-->"+socket.getInetAddress());
byte[] buffer = new byte[1024];
int len;
//读取传输过来的文件
while ((len = inputStream.read(buffer)) != -1){
fos.write(buffer,0,len);
}
System.out.println("文件接受完毕");
socket.shutdownInput();
//关闭资源
fos.close();
inputStream.close();
serverSocket.close();
}
}
Tomcat
https://tomcat.apache.org/ 官网
UDP 实现发送数据 接受数据
public class UDPSender {
public static void main(String
[] args
) throws Exception
{
DatagramSocket socket
= new DatagramSocket(8888);
BufferedReader bufferedReader
= new BufferedReader(
new InputStreamReader(System
.in
)
);
while (true){
String data
= bufferedReader
.readLine();
byte[] datas
= data
.getBytes();
DatagramPacket datagramPacket
=
new DatagramPacket(datas
,0,datas
.length
,
new InetSocketAddress("localhost", 6666));
socket
.send(datagramPacket
);
if (data
.equals("bye")){
break;
}
}
socket
.close();
}
}
public class UDPReceive {
public static void main(String
[] args
) throws Exception
{
DatagramSocket socket
= new DatagramSocket(6666);
while (true){
byte[] container
= new byte[1024];
DatagramPacket packet
= new DatagramPacket(container
,0,container
.length
);
socket
.receive(packet
);
byte[] data
= packet
.getData();
String receiveData
= new String(data
, 0, data
.length
);
System
.out
.println(receiveData
);
if (receiveData
.equals("bye")){
break;
}
}
socket
.close();
}
UDP多线程 实现在线聊天
public class TalkSend implements Runnable {
DatagramSocket socket
= null
;
BufferedReader bufferedReader
= null
;
private int ToPort
;
private String ToIP
;
private int formPort
;
public TalkSend(int toPort
, String toIP
, int formPort
) {
this.ToPort
= toPort
;
this.ToIP
= toIP
;
this.formPort
= formPort
;
try {
socket
= new DatagramSocket(this.formPort
);
bufferedReader
= new BufferedReader(
new InputStreamReader(System
.in
)
);
} catch (Exception e
) {
e
.printStackTrace();
}
}
@Override
public void run() {
while (true){
try {
String data
= bufferedReader
.readLine();
byte[] datas
= data
.getBytes();
DatagramPacket datagramPacket
=
new DatagramPacket(datas
,0,datas
.length
,
new InetSocketAddress(ToIP
, ToPort
));
socket
.send(datagramPacket
);
if (data
.equals("bye")){
break;
}
} catch (Exception e
) {
e
.printStackTrace();
}
}
socket
.close();
}
}
public class TalkReceive implements Runnable {
DatagramSocket socket
= null
;
private int port
;
private String name
;
public TalkReceive(int port
, String name
) {
this.port
= port
;
this.name
= name
;
try {
this.socket
= new DatagramSocket(port
);
} catch (Exception e
) {
e
.printStackTrace();
}
}
@Override
public void run() {
while (true){
try {
byte[] container
= new byte[1024];
DatagramPacket packet
= new DatagramPacket(container
,0,container
.length
);
socket
.receive(packet
);
byte[] data
= packet
.getData();
String receiveData
= new String(data
, 0, data
.length
);
System
.out
.println(name
+":"+receiveData
);
if (receiveData
.equals("bye")){
break;
}
} catch (Exception e
) {
e
.printStackTrace();
}
}
socket
.close();
}
}
public class User {
public static void main(String
[] args
) {
new Thread(new TalkSend(8080,"localhost",5555)).start();
new Thread(new TalkReceive(7777,"客服")).start();
}
}
public class Service {
public static void main(String
[] args
) {
new Thread(new TalkSend(7777,"localhost",6666)).start();
new Thread(new TalkReceive(8080,"用户")).start();
}
}
可以在控制台实现聊天的功能
通过java 用URL下载网络上的资源
public class URLDemo {
public static void main(String
[] args
) throws MalformedURLException
{
URL url
= new URL("https://m10.music.126.net/20201020151245/b9c9389e9f737c165adba6cc8bb8f633/" +
"yyaac/obj/wonDkMOGw6XDiTHCmMOi/4065853164/f5e5/817e/3618/82383dcc7149628d4f5a00c62f44a353.m4a");
try {
HttpURLConnection urlConnection
= (HttpURLConnection
) url
.openConnection();
InputStream inputStream
= urlConnection
.getInputStream();
FileOutputStream fos
= new FileOutputStream("天使的翅膀.m4a");
byte[] data
= new byte[1024];
int len
;
while ((len
= inputStream
.read(data
))!=-1){
fos
.write(data
,0,len
);
}
fos
.close();
inputStream
.close();
urlConnection
.disconnect();
} catch (IOException e
) {
e
.printStackTrace();
}
}
}