如果要使用java中的tcp/ip通过网络连接到服务器,则需要创建一个java.net.socket对象执业证书以连接到服务器。如果使用javanio,则还可以在javanio中创建socketchannel对象。
以下示例代码连接到ip地址为89.53.64.191的服务器上的端口80。该服务器是web服务器,端口80是web服务端口。
socket socket = new socket("89.53.64.191", 80);
我们也可以像如下示例中使用域名代替ip地址:
socket socket = new socket("wyzhang.com", 80);
通过socket发送数据,获取socket的输出流(outputstream),示例代码如下:
socket socket = new socket("jenkov.com", 80);outputstream out = socket.getoutputstream(); out.write("some data".getbytes());out.flush();out.clo(); socket.clo();
代码非常简单,但是想要通过网络将数据发送到服务器端,一定不要忘记调用flush()方法。操作系统底层的tcp/ip实现会先晚春古诗将数据放入一个更大的数据缓存块中product,而缓存块法国vs葡萄牙的大小是与tcp/ip的数据包大小相适应的。
从socket中读取数据,我们就需要获取socket的输入流(inputstream),代码如下:
socket socket = new socket("jenkov.com", 80);inputstream in = socket.getinputstream(); int data = i天狗望月图片n.read();//... read more data... in.clo();socket.clo();
代码也并不复杂,但需要注意的是,从socket的输入流中读取数据并不能读取文件那样,一直调用read()方法直到返回-1为止,因为对socket而言,只有当服务端关闭连接时,socket的输入流才会返回-1,而是事实上服务器并不会不停地关闭连接。假设我们想要通过一个连接发送多个请求,那么在这种情况下关闭连接就显得非常愚蠢。
因此,从socket的输入流中读取数据时我们必须要知道需要读取的字节数,这可以通过让服务器在数据中告知发送了多少字节来实现,也可以采用在数据末尾设置特殊字符标记的方式连实现。
当使用完socket后我们必须将socket关闭,断开与服务器之间的连接。关闭socket只需要调用socket.clo()方法即可,代码如下:
socket socket = new socket("jenkov.com", 80); socket.clo();
socket其实也就那么回事,写好输入流输出流,就没有什么问题了,如果有想学习编程的同学可以私信回复 ”学习“ 领取一线大厂java面试题总结+阿里巴巴泰山手册+各知识点学习思维导+一份300页pdf文档的java核心知识点总结!
本文发布于:2023-04-04 07:02:40,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/725e30545f3bd3a44537fb923d935d5a.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:java socket编程例子(java零基础自学).doc
本文 PDF 下载地址:java socket编程例子(java零基础自学).pdf
留言与评论(共有 0 条评论) |