最近这段时间因为公司的业务没有那么的紧,所以也会偶尔有一些自己的自由时间去做自己想做的事,最近也一直在琢磨socket 然后就写了一个详细易懂的demo分享给大家
在这里呢 那些tcp,udp的区别和什么tcp三次握手我这里就不说了(主要我现在也不太懂)百度一下你就知道
好了 废话不多 直接开始:
首先来一个流程图 根据这个图片就可以清楚知道使用TCP协议进行通信的实现的过程
然后再来一个简单却不失详细的demo
这里服务端的实现我用的是eclipse进行实现的
public class SocketServiceTcp {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("开始了臭弟弟:");
try {
//1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口
ServerSocket serverSocket = new ServerSocket(12345);
Socket socket = null;
//2.调用accept()等待客户端连接
System.out.println("~~~服务端已就绪,等待客户端接入");
socket = serverSocket.accept();
//3.连接后获取输入流,读取客户端信息
InputStream is=null;
InputStreamReader isr=null;
BufferedReader br=null;
is = socket.getInputStream(); //获取输入流
isr = new InputStreamReader(is,"UTF-8");
br = new BufferedReader(isr);
String info = null;
while((info=br.readLine())!=null){//循环读取客户端的信息
System.out.println("客户端发送过来的信息" + info);
}
socket.shutdownInput();//关闭输入流
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
}
}
Android客户端的实现
btna.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Socket socket = new Socket("192.168.30.83",12345);
OutputStream os = socket.getOutputStream();
os.write("弟弟救我".getBytes());
OutputStreamWriter writer = new OutputStreamWriter(os,"UTF-8");
writer.flush();
socket.shutdownOutput();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
});
实现的效果:
这就完成了客户端往服务器端发送数据