网络编程JAVA

1、文件上传

编写一个客户端向服务端上传文件的程序,要求使用TCP通信的的知识,完成将本地机器输入的路径下的文件上传到D盘中名称为upload的文件夹中。并把客户端的IP地址加上count标识作为上传后文件的文件名,即IP(count)的形式。其中,count随着文件的增多而增大,例如127.0.0.(1).jpg、127.0.0.(2).jpg。  

2、模拟微信聊天

将多线程与UDP通信相关知识结合,模拟实现微信聊天小程序。通过监听指定的端口号、目标IP地址和目标端口号,实现消息的发送和接收功能,并显示聊天的内容。

package ou;
import java.io.*;
import java.net.Socket;
public class TCPclient1 {
public static final String clientfilepath = "D:\\IMG_20221119_152830.jpg.jpg";
public static void main(String[] args) throws IOException {
// 创建客户端Socket对象
Socket socket = new Socket("127.0.0.1",8888);
OutputStream outputStream=socket.getOutputStream();
InputStream inputStream=new FileInputStream(clientfilepath);//输入流读取图片
byte[] buffer=new byte[1024];
int len=0;
while((len=inputStream.read(buffer))!=-1)
{
outputStream.write(buffer,0,len);//向服务端输送
}
outputStream.close();
inputStream.close();
socket.close();
}
}

package ou;
import java.io.*;
import java.net.*;
public class TCPserver1 {
public static final String serverfilepath = "D:\\IMG_20221119_152830.jpg.jpg";
public static void main(String[] args) throws IOException {
// 创建服务器Socket对象
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务端已经启动!");
// 监听客户端连接
System.out.println("等待接客户端请求...");
Socket socket = serverSocket.accept();
InputStream inputStream=socket.getInputStream();
//接受到的文件输送到目标文件夹
OutputStream outputStream=new FileOutputStream(serverfilepath);
byte[] buffer=new byte[1024];
int len=0;
System.out.println("服务端正在向本地磁盘写入...");
while((len=inputStream.read(buffer))!=-1)
{
outputStream.write(buffer,0,len);
}
System.out.println("服务端文件写入完成!");
outputStream.close();
inputStream.close();
serverSocket.close();
}

}
package ou;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
public class UDPclient {
public static final String localhost = "127.0.0.1";
public static final String Port = "4025";
public static final String Weixin = "4000";
public static void main(String[] args) throws Exception {
DatagramSocket datagramSocket = new DatagramSocket();
System.out.println("微信客户端启动成功!");
System.out.print("请输入你的微信号:");
Scanner sc1 = new Scanner(System.in);
String str1 = sc1.next();
System.out.print("请输入要发送的端口号:");
Scanner sc2 = new Scanner(System.in);
String str2 = sc2.next();
System.out.println("微信聊天系统已经启动!请开始发消息:");

Scanner scanner = new Scanner(System.in);
while(true){
String str = scanner.next();
byte[] bytes = str.getBytes();
DatagramPacket datagramPacket = new DatagramPacket(
bytes,
bytes.length,
InetAddress.getByName(localhost),
Integer.parseInt(Port));
datagramSocket.send(datagramPacket);
System.out.print(str + "-----数据已经发送");
}
}
}



package ou;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class UDPserver {
public static void main(String[] args) throws Exception {
DatagramSocket socket = new DatagramSocket(8888);
System.out.println("微信服务端已经启动!");
byte[] bytes = new byte[20];
DatagramPacket datagramPacket = new DatagramPacket(
bytes,
bytes.length);
System.out.println("等待接收数据...");
while(true){
socket.receive(datagramPacket);
int len = datagramPacket.getLength();
String rs = new String(bytes,0,len);
System.out.println("收到了:来自"+ InetAddress.getLocalHost()+"的消息:"+rs);
}

}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是啊是啊!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值