标签:socket 客户端与服务器端通信 java
此篇博文的来源
- 自己一直以为将网络编程这块的知识掌握的还可以了,今天突然有涉及客户端和服务器端的通信的这一块知识的应用,发现自己还不是那么的熟悉这一块,鼓捣了半天,因此就想通过此篇博文来记录一下,也希望能够给更对的朋友们一点帮助
废话不多说,直接上代码
客户端的代码如下
package org.wrh.socketserver;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class MyClient {
public static void main(String[] args) throws Exception {
//第一步:创建客户端Socket
Socket s=new Socket("192.168.1.107",4567);
//第二步:读取向服务器端发送的数据文件
FileInputStream fis=new FileInputStream("d:\\100.txt");
//第三步:获取Socket输出流
OutputStream os=s.getOutputStream();
byte[] buf=new byte[1024];
int len;
while((len=fis.read(buf))!=-1){
os.write(buf, 0, len);
}
//刷新一下缓冲区的数据
os.flush();
//告诉服务器,我的数据已经发送完了
s.shutdownOutput();
//将服务器返回的数据读取出来
InputStream is=s.getInputStream();
byte[] buf_in=new byte[1024];
int len_in=is.read(buf_in);
System.out.println(new String(buf_in,0,len_in));
fis.close();
os.close();
is.close();
s.close();
}
}
服务器端的代码如下
package org.wrh.socketserver;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MyServer {
public static void main(String[] args) throws Exception {
//第一步:建立服务器端Socket
ServerSocket ss=new ServerSocket(4567);
//第二步:获取客户端
Socket socket=ss.accept();
/*
* 获取客户端的ip地址
* */
String ip=socket.getInetAddress().getHostAddress();
System.out.println(ip+"....connected");
//第三步:获取Socket的输入流,对客户端发送来的数据进行读取
InputStream is=socket.getInputStream();
/*
*读取数据,并 将数据写入到文件中
* */
File dir=new File("d:\\wu");
if(!dir.exists()){
dir.mkdirs();
}
File file=new File(dir,ip+".txt");
FileOutputStream fos=new FileOutputStream(file);
byte[] buf=new byte[1024];
int len=0;
while((len=is.read(buf))!=-1){
fos.write(buf, 0, len);
}
fos.flush();
//给客户端一个反馈信息
OutputStream os=socket.getOutputStream();
os.write("收到数据".getBytes());
//下面为关闭各种要关闭的资源
fos.close();
is.close();
os.close();
socket.close();
ss.close();
}
}
上面的代码的注释写的比较详细,这里就不在解释
总结
- 这里要提醒大家的是,虽然上面的代码的流程很简单,但是如果大家不动手敲代码的话,是不太容易熟练掌握的,就像以前的我一样以为自己掌握了,最后当自己要应用的时候发现还是没有掌握
总之:动手实践、动手实践、动手实践、动手实践,重要的话说四遍,说四遍,哈哈哈
标签:socket 客户端与服务器端通信 java
原文地址:http://blog.csdn.net/u010412719/article/details/46463839