2.Java Networking--java网络:Socket

目录

本文是在Java Networking: Socket翻译而来。欢迎大家联系我,跟我一起交流。本人水平有限,如果错误欢迎指正。

在java里,为了在网络间连接服务器(通过TCP/IP),你需要创建一个java.net.Socket,让socket连接到服务器。如果你喜欢用Java NIO,你也可以选择使用Java NIO Socket Chanel。

###创建Socket

例子中的代码连接IP地址78.46.84.171服务器上的80端口。这个服务器在我们的web服务器上(www.jenkov,com),端口80是web服务器的端口。

        Socket socket = new Socket("78.46.84.171", 80);

你也可以使用域名来代替ip地址,像这样:

        Socket  socket  = new Socket("jenkov.com", 80);

###向Socket写入数据:
你必须获取到socket的输出流才可以向它写入数据。像这样做:

        Socket socket = new Socket("jenkov.com", 80);
	    OutputStream out = socket.getOutputStream();

	    out.write("some data".getBytes());
	    out.flush();
		out.close();

		socket.close();

就是这么简单!

当你真的、真的想让数据通过网络发送到服务器,别忘了调用flush()方法。操作系统中低层的TCP/IP实现会缓存数据,同时为了适应TCP/IP数据包的大小,数据将会以比较大的缓存块发送。

###从Socket中读取数据
从Socket中读取数据,你需要先获得它的输入流。下面是读取的方法:

        Socket socket = new Socket("jenkov.com", 80);
        InputStream in = socket.getInputStream();

        Int data = in.read;
        //… read more data…

        in.close;
        socket.close;

很简单,对吧?

记住,你不能像读取文件一样,从Socket的输入流中读取数据直到它返回-1。原因是只有当服务器关闭连接时才会返回-1。但是服务器不会总关闭连接。你可能想在同一个连接中发送多个请求。这种情况下关闭连接是不是太蠢了。

另外你必须知道从Socket的输入流中读取了多少字节数。这可以让服务器告诉你发送了多少字节数,活着通过寻找数据末尾特殊字符来完成。

###关闭Socket:
当你使用完Socket,你必须关闭它和服务器之间的连接。调用Socket.close()方法可以实现,如下:

       Socket socket = new Socket("jenkov.com", 80);

       socket.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值