TCP实现文本文件上传

开始我的第一篇博客

说说实现文本上传

首先是服务器端要接受客户端传来的数据,第二步将传来的数据写入到服务器的某个文件中,最后向客户端返回上传成功

<span style="font-size:14px;">System.out.println("服务器端启动...");
		ServerSocket server = new ServerSocket(33333);

		Socket s = server.accept();
		System.out.println(s.getInetAddress().getHostAddress()+"连接到服务器端....");

		//创建接收客户端数据的字符读取流
		InputStream in = s.getInputStream();
		BufferedReader br = new BufferedReader(new InputStreamReader(in));

		//创建写入到服务器端的某个文件的字符输出流
		FileWriter fw = new FileWriter("copy.java");
		PrintWriter pw = new PrintWriter(fw,true);

		//创建发送"上传成功"的字符输出流
		OutputStream out =s.getOutputStream();
		PrintWriter pww = new PrintWriter(out,true);

		//循环读取客户端,写入到本地文件
		String line = null;
		while((line = br.readLine())!=null)//因为读取的是客户端,所以读不到null
		{
			pw.println(line);
		}
        //发送"上传成功"
        pww.println("上传成功");

        pw.close();
		s.close();

</span>
接下来就是客户端先读取本地文件,然后向服务器端传入数据,最后接收是否上传成功

Socket  socket = new Socket(InetAddress.getByName("10.0.185.144"),33333);

		//创建读取本地文件的字符读取流
		BufferedReader br =new BufferedReader(new FileReader("Demo1.java"));

        //创建发送给服务器端数据的字符输出流
		OutputStream out = socket.getOutputStream();
		PrintWriter pw =new PrintWriter(out,true);

		//创建读取"上传成功"的字符读取流
		InputStream in = socket.getInputStream();
		BufferedReader brr = new BufferedReader(new InputStreamReader(in));

		//循环读取本地文件,并发送给服务器端
		String line = null;
		while((line = br.readLine())!=null)
		{
			pw.println(line);
		}
		//向服务器端写入结束标记
		socket.shutdownOutput();

		//读取"上传成功"
		System.out.println(brr.readLine());

		br.close();
		socket.close();



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,实现群聊功能需要客户端和服务器端的配合。下面简单介绍一下实现的思路: 1. 客户端连接服务器,可以选择加入某个群聊或者创建新的群聊。 2. 客户端可以输入文本消息或者选择上传文件。 3. 客户端将消息发送给服务器。 4. 服务器接收到消息后,将消息转发给所有在群聊中的客户端。 5. 客户端接收到消息后,可以选择查看文本消息或者下载文件。 下面是一个简单的示例代码(使用Python的socket和threading库实现): 服务器端代码: ```python import socket import threading # 存储所有客户端的socket连接 clients = [] def handle_client(client_socket): # 将新加入的客户端加入clients列表中 clients.append(client_socket) while True: try: # 接收客户端发送的消息 data = client_socket.recv(1024) if not data: break # 将消息转发给所有客户端 for c in clients: c.sendall(data) except: # 客户端断开连接 clients.remove(client_socket) break def start_server(): # 创建TCP socket并绑定端口 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('localhost', 8888)) server_socket.listen(5) while True: # 接收新的客户端连接 client_socket, addr = server_socket.accept() # 创建新的线程处理客户端连接 client_thread = threading.Thread(target=handle_client, args=(client_socket,)) client_thread.start() if __name__ == '__main__': start_server() ``` 客户端代码: ```python import socket import threading def send_msg(client_socket): while True: # 输入消息并发送给服务器 msg = input() client_socket.sendall(msg.encode()) def receive_msg(client_socket): while True: # 接收服务器转发的消息并打印 data = client_socket.recv(1024) print(data.decode()) def start_client(): # 创建TCP socket并连接服务器 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect(('localhost', 8888)) # 创建发送消息的线程和接收消息的线程 send_thread = threading.Thread(target=send_msg, args=(client_socket,)) receive_thread = threading.Thread(target=receive_msg, args=(client_socket,)) # 启动线程 send_thread.start() receive_thread.start() if __name__ == '__main__': start_client() ``` 这个示例代码只是一个简单的实现,还有很多需要完善的地方,比如客户端需要支持上传文件,服务器需要支持处理文件等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值