Socket相关理解

客户端:

1. 数据发送:

  //1.连接
  Socket sk = new Socket(address,port);
  //2.连接上之后放到输出流中
  OutputStream os = sk.getOutputStream();
 // 3.将对象的格式表示打印到文本输出流
  PrintWriter pw = new PrintWriter(os);
  //4.向服务器写入需要发送信息!
   pw.write("向服务器发送信息!");
   //刷新write,不然服务端可能接收不到数据。
   pw.flush();
//5.禁用此套接字的输出流。
sk.shutdownOutput();

  1. 数据接收

//1.获取从服务器的输出流数据,放到客户端的输入流中。
InputStream ins = sk.getInputStream();
//2.将字节流数据转换成字符流数据放到字符缓冲流中
BufferedReader br = new BufferedReader(new InputStreamReader(ins));
//3.读取服务器发送过来的数据(解析数据)
String str = null ;
StringBuffer sb = new StringBuffer();
while((str = br.readLine()) !=null){
                sb.append(str);
}

服务器端

//开启服务
ServerSocket ssocket = new ServerSocket(port);
 //等待连接的Socket,他在等生成实例,生成了便说明有连接成功了
            Socket socket ;
            while(true){
                socket = ssocket.accept();    
                //每接收到一个客户端连接刚创建一个线程来处理该连接的情况
                Thread t = new Thread(new MyRunnable(socket));
                t.start();
            }      
  1. 服务器接收数据:
Socket socket ;
//1.连接上之后获取对方传过来的信息
InputStream  ins = socket.getInputStream();
//2.将字节流数据转换成字符流数据放到字符缓冲流中
BufferedReader  br = new BufferedReader(new InputStreamReader(ins));
//3.解析数据
StringBuffer info = new StringBuffer();
String linedata = null;
//将信息收信进info
while((linedata = br.readLine() ) != null){
                info.append(linedata);
}
 //将信息按约定的解析
String[] list = info.toString()==null?null:info.toString().split(";");
//4.禁用此套接字的输入流
socket.shutdownInput(); 
  1. 服务器输出数据
//1.将结果返回给客户端
OutputStream   os = socket.getOutputStream();
// 2.将对象的格式表示打印到文本输出流
PrintWriter pw = new PrintWriter(os);
//3.向客户端发送数据
pw.write("向客户端发送数据");
pw.flush();
 //4.禁用此套接字的输出流
socket.shutdownOutput();

注意:
相关流的关闭(如:br.close())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值