`

有关socket的问题,为何客户端无法将数据连续写入文件啊

阅读更多
服务器端连续向客户端发送数据,客户端为何不能连续将数据写入文件啊?
//服务器端
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;


public class ss {

	public static void main(String[] args) {
		ServerSocket ss;
		Socket s;
		/*byte [] bp=new byte[6];
		byte [] stop=new byte[1];*/
		int port=8887;
		
		try {
			/*System.out.println("请输入端口号");
			System.in.read(bp);
			port=Integer.parseInt(new String(bp).trim());*/
			
			ss=new ServerSocket(port);
			s=ss.accept();
			while(true)
			{
				
				s.getOutputStream().write("12ab12cd".getBytes());
				/*System.in.read(stop);
				if((char)stop[0]=='0')
				{
					break;
				}*/
				
			}
		} catch (IOException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}

	}

}
//客户端
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;


public class Sockett implements Runnable
{
	String   host   =   "127.0.0.1";   
    int   port   =   8887,i;   
    Socket   socket;   
      
    InputStream   is ;   
    FileOutputStream out ;
    byte [] b=new byte[5000];
    byte [] bb=new byte[1];
    byte [] bh=new byte[16];
	byte [] bp=new byte[6];
    Thread th1;
    
    public Sockett()
    {
    	th1=new Thread(this);
    }
	
	public void run()
	{
		try {
//			System.out.println("请输入IP地址");
//			System.in.read(bh);
//			host=new String(bh).trim();
//			//System.out.println("host is"+host);
//			System.out.println("请输入端口号");
//			System.in.read(bp);
//			port=Integer.parseInt(new String(bp).trim());
			//System.out.println("port is"+port);
			
		  	  socket=new Socket(host,port);
				is=socket.getInputStream();
				out=new FileOutputStream(new File("d:\\\\t2"),true);
				while(true)
				{
					if(is.available()>-1)
					{
					i=is.read(b);
					out.write(b);
					
					}
					System.in.read(bb);
					char c=(char)bb[0];
					if(c=='0')
					{
						break;
					}
				}
				out.flush();
				is.close();
				out.close();
				socket.close();
				System.out.println("stop");
				
			} catch (IOException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
		
	}

}
public class Start {

	
	public static void main(String[] args) {
			
		Sockett stt=new Sockett();
		stt.th1.start();
		
	}

}

 

分享到:
评论

相关推荐

    利用socket连续发送与连续接收数据

    本文将深入探讨如何利用Socket进行连续发送与连续接收数据,基于标题“利用socket连续发送与连续接收数据”以及描述中提到的实现过程。 首先,让我们理解什么是Socket。Socket是进程间通信的一种方式,它提供了一种...

    vb6.0winsock控件2种方式发送大文件,包含服务端、客户端

    这种方法允许连续读取和写入文件,而不需要预先分割文件。在客户端,打开文件流,然后使用`Put`方法将整个文件内容发送到服务端。 **2. 服务端接收** 服务端接收到数据流后,同样使用`Get`方法将数据写入到本地文件...

    c++实现局域网文件传送基于socket

    4. **发送文件数据**:通过连续调用`send()`函数将文件内容分块发送。 5. **接收确认**:等待服务器发送的确认信息,确保文件已成功接收。 **四、文件传输细节** 在实际的文件传输过程中,需要注意以下几点: - ...

    [Qt] TCP服务器客户端(可连接多个客户端,断线重联,指定格式解析))

    通过QTcpSocket的write()函数,我们可以将数据写入到网络缓冲区,然后发送给连接的客户端。 现在,让我们详细讲解如何实现这些功能: **1. 创建TCP服务器**: 使用QTcpServer类,我们需要继承并实现其抽象方法...

    java socket

    2. `Socket`对象同样提供输入流和输出流,客户端可以使用这些流来写入数据到服务器并读取服务器返回的数据。 3. 当通信完成后,客户端也需要关闭`Socket`。 标签提到的“时时通讯”意味着Socket常用于实时或连续的...

    基于socket的UDP通信

    5. **文件处理**:接收到的数据通常是以二进制形式传输的,因此服务器需要将这些数据写入到本地文件中,恢复原始文件内容。这个过程需要注意文件的正确解码和二进制数据的处理。 6. **响应与关闭**:服务器在接收完...

    socket开发包.zip

    6. **数据传输**:通过Socket进行数据传输时,可以使用read和write方法来读取和写入数据。对于TCP Socket,数据通常是连续的字节流;而对于UDP Socket,数据是独立的数据包。 7. **错误处理**:在Socket编程中,...

    java socket即时聊天工具 可发文件 实现多计算机聊天

    这通常是通过Socket的输出流将文件数据写入,然后在接收端通过输入流读取这些数据,再保存为文件。需要注意的是,文件传输可能涉及大块数据,因此需要考虑分块传输和断点续传以防止网络中断导致的传输失败。 6. **...

    c# 编写的服务端和客服端的文件传输

    - **转换流(如:BinaryReader/Writer)**:在发送和接收文件时,可能会用到这些流来将数据转换为二进制格式,以便在网络上传输。 5. **文件分块传输**: - 对于大文件传输,通常会将文件分割成多个小块,分批次...

    TFTP客户端C语言实现

    客户端通过发送RRQ或WRQ启动一个会话,请求读取或写入文件。服务器响应数据包或错误信息,如`ACK`(Acknowledgement)或`ERROR`。数据传输以512字节的数据块为单位进行,最后一块可能小于512字节。 2. **C语言实现...

    socketclient.rar

    在Socket编程中,通常将输出流(OutputStream)分配给一个单独的线程,以便在不影响接收服务器响应的情况下连续发送数据。这个类可能实现了`Runnable`接口,并重写了`run()`方法,其中包含了向服务器写入数据的逻辑...

    socket programming

    - 基于流的 Socket 发送连续的数据流,接收端按顺序接收数据,例如 TCP。 - **可靠**(Reliable)与 **不可靠**(Unreliable) - 可靠的 Socket 能够保证数据的完整性和顺序,例如 TCP。 - 不可靠的 Socket 数据...

    Androidsocket通讯demo

    在Android平台上进行网络编程时,Socket通信是一种常见且重要的技术,用于实现客户端和服务端之间的数据交换。本示例"Android Socket通讯demo"旨在演示如何在Android应用中建立和使用Socket连接,实现双向的数据收发...

    SFTP 源码浅析1

    例如,`put`操作会触发一系列步骤,包括发送`OPEN`请求给服务端,服务端响应并创建或打开文件,客户端接着读取本地数据并分块发送,服务端接收数据并写入文件,最后客户端发送`CLOSE`请求关闭文件。这种操作方式提高...

    java文件传输[归类].pdf

    完整的实现将包括解析客户端命令、读取/写入文件内容、错误处理等复杂逻辑。在处理文件传输时,还需要考虑安全性、文件完整性校验、异常处理等问题,以确保数据的正确传输。 总之,Java NIO提供了高效且灵活的方式...

    C语言实现ftp文件传输功能ftp.zip

    下载则是反向的过程,从服务器接收数据并写入本地文件。 描述中的“4K随机数据收发进行压力测试”意味着程序包含了性能验证部分。这通常涉及到生成随机数据,连续多次进行上传和下载操作,以检查在高负载下的稳定性...

    ios socket请求相关的例子

    在实际项目中,你可以使用`CocoaAsyncSocket`来创建即时通讯应用、文件传输服务、在线游戏中的网络同步,甚至在服务器和客户端之间建立数据交换通道。 总的来说,“ios socket请求相关的例子”这个压缩包包含了一...

    FTT.rar_FTT上传工具_FTT共享设置_FTT是什么工具_JAVA FTT_ftt工具

    客户端将本地文件内容转化为字节流,通过Socket的OutputStream发送到服务器;服务器端则通过Socket的InputStream接收这些字节流,将其保存为文件。 3. **错误处理与断线重连**:Java Socket提供了异常处理机制,当...

    sys/**. h sys文件夹里面的头文件

    `file.h`可能涉及对文件操作的进一步抽象,比如打开、关闭、读取和写入文件的高级接口。 `locking.h`与文件锁有关,文件锁用于在多进程或多线程环境中协调对共享资源的访问,防止数据冲突。 `param.h`通常包含系统...

Global site tag (gtag.js) - Google Analytics