public static void main(String[] args) throws Exception e{ Socket sk = new Socket("...",port); InputStream in = sk.getInputStream(); OutputStream out = sk.getInputStream(); String info = "name:filename"; out.write(info.getBytes()); //发送文件名byte[] bf = new byte[1024]; //缓冲 int b =0; String rev = "";//接受服务器回应 while(true){ b = in.read(bf); if(b<0) break; rev += new String(bf,0,b); //服务器发回的消息 } if(!rev.equals("...")) //判断服务器的回应,是否要传递文件 .......... //下面是传文件的过程 FileInputStream f = new FileInputStream("....."); while(true){ b = f.read(bf); if(b<0) break; out.write(bf,0,b); //向服务器发送读取的文件信息 } //发送完毕...//最后别忘了in,out,f,sk都要close();
OutputStream out = sk.getInputStream(); 应该是sk.getOutputStream();
和这个客户端差不多阿 建立一个server,具体参考java.net.ServerSocket类 然后用accept()方法监听 while(true){ Socket sk = accept();//系统会一直监听,如果有连接请求,就返回一个Socket 用sk的getInputStream和getOutputStream,剩下的操作和客户端一样 }
不是先传送文件名,再传送文件内容这样的吗 Socket sk = accept();//这样一来客户端传过来的文件名和文件内容都无法区分了,我得先用文件名创建个文件,再把内容写在里面,这是两个不同操作,客户端有文件名判断,可是服务器端没尤呀
Socket sk = accept(); InputStream in = sk.getInputStream(); 你在第一次读取这个in的时候,客户端发送的是文件名的数据流,你在截取这个流的时候会有结尾的阿,b = in.read(bf);当你读完客户短发送的那一段文件名的流时,b = -1,此时第一次读取接速 然后你用OutputStream 发送你的确认消息,然后再读取InputStream流,这时才是文件数据
2.等待服务器发送接受回应
3.你传送文件数据这是个最简易方便的办法你把文件的数据和文件的信息一起发给服务器,服务器利用标签来区分信息和数据,就像html中form表单的提交一样
这个办法没有第一个好诶
Socket sk = new Socket("...",port);
InputStream in = sk.getInputStream();
OutputStream out = sk.getInputStream();
String info = "name:filename";
out.write(info.getBytes()); //发送文件名byte[] bf = new byte[1024]; //缓冲
int b =0;
String rev = "";//接受服务器回应
while(true){
b = in.read(bf);
if(b<0) break;
rev += new String(bf,0,b); //服务器发回的消息
}
if(!rev.equals("...")) //判断服务器的回应,是否要传递文件
..........
//下面是传文件的过程
FileInputStream f = new FileInputStream(".....");
while(true){
b = f.read(bf);
if(b<0) break;
out.write(bf,0,b); //向服务器发送读取的文件信息
}
//发送完毕...//最后别忘了in,out,f,sk都要close();
应该是sk.getOutputStream();
建立一个server,具体参考java.net.ServerSocket类
然后用accept()方法监听
while(true){
Socket sk = accept();//系统会一直监听,如果有连接请求,就返回一个Socket
用sk的getInputStream和getOutputStream,剩下的操作和客户端一样
}
Socket sk = accept();//这样一来客户端传过来的文件名和文件内容都无法区分了,我得先用文件名创建个文件,再把内容写在里面,这是两个不同操作,客户端有文件名判断,可是服务器端没尤呀
InputStream in = sk.getInputStream();
你在第一次读取这个in的时候,客户端发送的是文件名的数据流,你在截取这个流的时候会有结尾的阿,b = in.read(bf);当你读完客户短发送的那一段文件名的流时,b = -1,此时第一次读取接速
然后你用OutputStream 发送你的确认消息,然后再读取InputStream流,这时才是文件数据