TCP数据传输(五):上传文本文件并给出反馈

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.ServerSocket;

import java.net.Socket;

public
class
UploadServer {

public
static void
main(String[] args)
throws IOException {

// 创建服务器端的Socket对象

ServerSocketss = newServerSocket(11111);

// 监听客户端连接

Sockets = ss.accept();//
阻塞

// 封装通道内的流

BufferedReaderbr = newBufferedReader(newInputStreamReader(

s.getInputStream()));

// 封装文本文件

BufferedWriterbw = newBufferedWriter(newFileWriter("Copy.java"));

Stringline = null;

while ((line = br.readLine())!=
null){
// 阻塞

// if("over".equals(line)){

// break;

// }

bw.write(line);

bw.newLine();

bw.flush();

}

// 给出反馈

BufferedWriterbwServer = newBufferedWriter(newOutputStreamWriter(

s.getOutputStream()));

bwServer.write("文件上传成功");

bwServer.newLine();

bwServer.flush();

// 释放资源

bw.close();

s.close();

}

}

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.Socket;

/*

* 按照我们正常的思路加入反馈信息,结果却没反应。为什么呢?

* 读取文本文件是可以以null作为结束信息的,但是呢,通道内是不能这样结束信息的。

* 所以,服务器根本就不知道你结束了。而你还想服务器给你反馈。所以,就相互等待了。

*

* 如何解决呢?

* A:在多写一条数据,告诉服务器,读取到这条数据说明我就结束,你也结束吧。

*    这样做可以解决问题,但是不好。

* B:Socket对象提供了一种解决方案

*    publicvoid shutdownOutput()

*/

public
class
UploadClient {

public
static void
main(String[] args)
throws IOException {

// 创建客户端Socket对象

Sockets = newSocket("192.168.12.92", 11111);

// 封装文本文件

BufferedReaderbr = newBufferedReader(newFileReader(

"InetAddressDemo.java"));

// 封装通道内流

BufferedWriterbw = newBufferedWriter(newOutputStreamWriter(

s.getOutputStream()));

Stringline = null;

while ((line = br.readLine())!=
null){
// 阻塞

bw.write(line);

bw.newLine();

bw.flush();

}

//自定义一个结束标记

//    bw.write("over");

//    bw.newLine();

//    bw.flush();

//Socket提供了一个终止,它会通知服务器你别等了,我没有数据过来了

s.shutdownOutput();

// 接收反馈

BufferedReaderbrClient = newBufferedReader(newInputStreamReader(

s.getInputStream()));

Stringclient = brClient.readLine();
// 阻塞

System.out.println(client);

// 释放资源

br.close();

s.close();

}

}

时间: 2024-10-14 10:15:25

TCP数据传输(五):上传文本文件并给出反馈的相关文章

TCP、UDP练习题 (UDP聊天程序、TCP上传文本文件和图片文件)

TCP.UDP编程练习 TCP ☆上传文本文件 读取一个本地文本文件,将数据发送到服务端,服务器端对数据进行存储. 存储完毕后,给客户端一个提示. 一.解题思路 客户端:(1) 创建Socket对象----用服务器的ip+端口号 (2)读取文件内容 (3)通过socket把内容发送给服务器端(把socket中的输出流包装成"打印流"来进行发送文本,是一种比较安全的输出方式,不会出现失真.) 服务器端:(1) 创建服务器socket---ServerSocket (2)通过ServerS

用java网络编程中的TCP方式上传文本文件及出现的小问题

自己今天刚学java网络编程中的TCP传输,要用TCP传输文件时,自己也是遇到了一些问题,抽空把它整理了一下,供自己以后参考使用. 首先在这个程序中,我用一个客户端,一个服务端,从客户端上传一个文本文件给服务端,服务端接收数据并显示“上传成功”给客户端. 客户端: 1 import java.io.BufferedReader; 2 import java.io.FileReader; 3 import java.io.IOException; 4 import java.io.InputStr

java 网络编程(五)----TDP进阶篇上传文本文件

设计需求:从客户端上传txt文件到服务器,服务端收到文件后,发送消息给客户端接收完成. 1. 服务器端: public class UpLoadFileServer { public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(10010); Socket s =ss.accept(); BufferedReader bufin = new BufferedReader

Android 通过httppost上传文本文件到服务器。

/** * 往服务器上上传文本 比如log日志 * @param urlstr 请求的url * @param uploadFile log日志的路径 * /mnt/shell/emulated/0/LOG/LOG.log * @param newName log日志的名字 LOG.log * @return */ public static void httpPost(Activity activity,String urlstr,String uploadFile,String newNam

java网络编程(7)——利用tcp实现文件上传

其实客户端与服务端通讯的道理都是一样的,都是通过输入与输出这两个流,那么实现文件上传也就是同样的,客户端把文件读到文件流,服务端用文件流来接受,然后写到一个文件中,这样子就实现了文件上传,文件拷贝也是同样的道理~,具体看代码实现: 客户端: package com.seven.tcp; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStre

TCP实现文件上传

文件上传分析 一.基本实现 1.服务端 public class FileUpload_Server { public static void main(String[] args) throws IOException { System.out.println("服务器 启动..... "); // 1. 创建服务端ServerSocket ServerSocket serverSocket = new ServerSocket(8888); // 2. 建立连接 Socket ac

TCP通信(上传文件)

package demo04; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class TCPclient { public static void main(String[] args) throws IOException { //1.创建so

基于Tcp协议的上传下载

目录格式: 构建此目录就可随意使用! client端 import socket import sys import os import json import struct sk = socket.socket() adress = ('192.168.12.11', 29231) def upload(): message = {'filename': None, 'filesize': None} sk.connect(adress) temp = '上传' sk.send(temp.en

运用tcp协议创建上传文件

牢记buffered需要刷新flush package loadfile; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; impor