永远也记不住的Socket

我再也不写长篇大论介绍socket了,因为不用它就压根也记不住。每次都要上网搜。

今天我也只写一点,能记住多少记多少吧。

1.Socket就是插座嘛,想象客户端与服务端要传数据不得连一条虚拟的线嘛,那么Socket就是插线的插座。
2.客户端的Socket是为了往服务端写数据嘛,那就是用Writer对象往OutputStream里写咯,没什么别的可说的

int port = 7777;//我是客户端用这个端口传数据
String host = "192.168.6.77";//我要穿数据到这个客户端上去

//看好了我要创建一个客户端Socket来与服务端连接了
Socket client = new Socket(host,port);//瞧瞧,多简单点事,没那么难

//看好了我要往客户端写数据了
Writer writer = new OutputStreamWriter(client.getOutputStream());//先获取到自己的流做个Writer来压压惊
writer.write("less is better than nothing");//写写写
writer.flush();//刷一下才会有哦

//写完了,拜拜吧您嘞
writer.close();
client.close();

3.服务端就不一样了,丫既能读又能写,也是戏多。写的话跟客户端没甚两样,读的套路也是一样地 ,用Reader嘛

int port = 7777;//我是服务端用这个端口传数据,而且我本身就是服务端,不需要用客户端的IP地址创建SeverSocket,就是这么牛逼

//来来来,我要创建一个ServerSocket了,别眨眼啊,
ServerSocket server = new ServerSocket(port);
//但是我服务谁呀,对,我有accept方法来连接一下我服务的客户端Socket
Socket socket = server.accept();//注意这里是socket啊,不再是server了,它获取一个可以连接的客户端socket对象

//我能读,你来打我呀
Reader reader = new InputStreamWriter(socket.getInputStream());//获取客户端socket的输入流,获取它发给我的信息。
StringBuffer sb = new StringBuffer();//用String来表示传过来的数据
Char[] chars = new Char[256];//用来将流中的数据写到字符数组中
int len;//长度嘛很好理解啦
if((len = reader.read(chars) != -1)){
     sb.append(new String(chars,0,len));//用读进来的字符们创建一个字符串并添加到buffer中
}
System.out.println("from client: " + sb);//数出来让你看看啥样的

//我还能写,耶,戏就是这么多
Writer writer = new OurputStream(socket.getOutputStream());//获取客户端socket的输出流,拿到了我们才能往里写嘛,不然咋写嘞,就好像拿到客户端给的一张纸一样
writer.write("less is better than nothing");
writer.flush();

//OK 都写完了,可以休息了
writer.close();
reader.close();
socket.close();
server.close();

4.Writer和Reader都是操作流的,与socket等都无关啊。socket等以流为载体传输数据。

猜你喜欢

转载自blog.csdn.net/Lqq77s/article/details/77842291