java socket编程,客户端发送文件给服务器,服务器接收到文件后如何返回确认信息告诉客户端文件已接收

java socket编程,客户端发送文件给服务器,服务器接收到文件后如何返回确认信息告诉客户端文件已接收,第1张

import javaioBufferedReader;  
import javaioFile;  
import javaioFileNotFoundException;  
import javaioFileOutputStream;  
import javaioIOException;  
import javaioInputStream;  
import javaioInputStreamReader;  
import javanetServerSocket;  
import javanetSocket;  
  
  

   
  文件名:ServerReceivejava 
  实现功能:作为服务器接收客户端发送的文件 
   
  具体实现过程: 
  1、建立SocketServer,等待客户端的连接 
  2、当有客户端连接的时候,按照双方的约定,这时要读取一行数据 
       其中保存客户端要发送的文件名和文件大小信息 
  3、根据文件名在本地创建文件,并建立好流通信 
  4、循环接收数据包,将数据包写入文件 
  5、当接收数据的长度等于提前文件发过来的文件长度,即表示文件接收完毕,关闭文件 
  6、文件接收工作结束 
   
   
  注:此代码仅为演示客户端与服务器传送文件使用, 
       每一个数据包之前没有文件协议命令 
       具体的协议传输和文件传出的使用阶段可根据自己程序自行放置 
   
   
  作者:小菜鸟 
  创建时间:2014-08-19 
   
  /  
  
  
  
  
public class ServerReceive {  
  
    public static void main(String[] args) {  
          
        /与服务器建立连接的通信句柄/  
        ServerSocket ss = null;  
        Socket s = null;  
          
        /定义用于在接收后在本地创建的文件对象和文件输出流对象/  
        File file = null;  
        FileOutputStream fos = null;  
          
        /定义输入流,使用socket的inputStream对数据包进行输入/  
        InputStream is = null;  
          
        /定义byte数组来作为数据包的存储数据包/  
        byte[] buffer = new byte[4096  5];  
          
        /用来接收文件发送请求的字符串/  
        String comm = null;  
          
          
        /建立socekt通信,等待服务器进行连接/  
        try {  
            ss = new ServerSocket(4004);  
            s = ssaccept();  
        } catch (IOException e) {  
            eprintStackTrace();  
        }  
          
          
        /读取一行客户端发送过来的约定信息/  
        try {  
            InputStreamReader isr = new InputStreamReader(sgetInputStream());  
            BufferedReader br = new BufferedReader(isr);  
            comm = brreadLine();  
        } catch (IOException e) {  
            Systemoutprintln("服务器与客户端断开连接");  
        }  
          
        /开始解析客户端发送过来的请求命令/  
        int index = commindexOf("/#");  
          
        /判断协议是否为发送文件的协议/  
        String xieyi = commsubstring(0, index);  
        if(!xieyiequals("111")){  
            Systemoutprintln("服务器收到的协议码不正确");  
            return;  
        }  
          
        /解析出文件的名字和大小/  
        comm = commsubstring(index + 2);  
        index = commindexOf("/#");  
        String filename = commsubstring(0, index)trim();  
        String filesize = commsubstring(index + 2)trim();  
          
          
        /创建空文件,用来进行接收文件/  
        file = new File(filename);  
        if(!fileexists()){  
            try {  
                filecreateNewFile();  
            } catch (IOException e) {  
                Systemoutprintln("服务器端创建文件失败");  
            }  
        }else{  
            /在此也可以询问是否覆盖/  
            Systemoutprintln("本路径已存在相同文件,进行覆盖");  
        }  
          
        /以上就是客户端代码中写到的服务器的准备部分/  
          
          
        / 
          服务器接收文件的关键代码/  
        try {  
            /将文件包装到文件输出流对象中/  
            fos = new FileOutputStream(file);  
            long file_size = LongparseLong(filesize);  
            is = sgetInputStream();  
            /size为每次接收数据包的长度/  
            int size = 0;  
            /count用来记录已接收到文件的长度/  
            long count = 0;  
              
            /使用while循环接收数据包/  
            while(count < file_size){  
                /从输入流中读取一个数据包/  
                size = isread(buffer);  
                  
                /将刚刚读取的数据包写到本地文件中去/  
                foswrite(buffer, 0, size);  
                fosflush();  
                  
                /将已接收到文件的长度+size/  
                count += size;  
                Systemoutprintln("服务器端接收到数据包,大小为" + size);  
            }  
              
        } catch (FileNotFoundException e) {  
            Systemoutprintln("服务器写文件失败");  
        } catch (IOException e) {  
            Systemoutprintln("服务器:客户端断开连接");  
        }finally{  
            / 
              将打开的文件关闭 
              如有需要,也可以在此关闭socket连接 
              /  
            try {  
                if(fos != null)  
                    fosclose();  
            } catch (IOException e) {  
                eprintStackTrace();  
            }//catch (IOException e)  
        }//finally  
  
    }//public static void main(String[] args)  
}//public class ServerReceive

<%=RequestServerVariables("server_name")%>
<%=RequestServerVariables("url")%>
假设 >

网站打不开或者出现死链接的时候都需要有一个美观的404页面,这样才能减少网站的调试率。下面我们分别讲一下win系统、linux系统服务器的分别设置方法:

需要注意的是,如果还原默认值后该目录将被删除,设置自定义错误页面后请勿将重要文件放在>

常见的404错误页面:

404bhtm :文件未找到的错误提示

400htm :错误的请求

403-6htm :IP地址被拒绝

500-13htm :系统忙。

如果您想修改错误提示,请用ftp下载这些对应的文件,修改后再重新上传即可。

win系统和linux系统404页面的设置基本相同,都可以通过服务器后台直接设置,具体方法如下:

本地制作404页面,需要您先在本地电脑制作一个404页面,如:404htm,然后上传到服务器。

当用浏览器访问您的网站出错时,服务器会根据不同的错误代码给用户反馈相关的信息。如文件未找到404,未授权403等等,当您点击"设置自定义错误"后,系统会将所有错误页面复制到您空间的/>我不清楚你的重点是获取,还是返回,
获取的话,应该网上有代码,可以借鉴
<script language="javascript">
var sMacAddr="";
var sIPAddr="";
var sDNSName="";
var service = locatorConnectServer();
serviceSecurity_ImpersonationLevel=3;
serviceInstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
</script>
<script FOR="foo" EVENT="OnObjectReady(objObject,objAsyncContext)" LANGUAGE="JScript">
if(objObjectIPEnabled != null && objObjectIPEnabled != "undefined" && objObjectIPEnabled == true){
if(objObjectIPEnabled &&
objObjectIPAddress(0) !=null && objObjectIPAddress(0) !=
"undefined")
sIPAddr = objObjectIPAddress(0);
if(objObjectMACAddress != null &&objObjectMACAddress != "undefined")
sMacAddr = objObjectMACAddress;
if(objObjectDNSHostName != null &&objObjectDNSHostName != "undefined")
sDNSName = objObjectDNSHostName;
}
</script>
js返回给服务器,通过ajax远程请求吧
或者直接把数据当做参数,通过跳转传递给服务器


调试时如何模拟服务端返回>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13470478.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-13
下一篇 2023-08-13

发表评论

登录后才能评论

评论列表(0条)

保存