没有合适的资源?快使用搜索试试~ 我知道了~
首页java使用Socket类接收和发送数据
java使用Socket类接收和发送数据
1.8k 浏览量
更新于2023-05-26
评论 1
收藏 84KB PDF 举报
Socket类是负责处理客户端通信的Java类。本文主要是介绍java使用Socket类接收和发送数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
资源详情
资源评论
资源推荐

java使用使用Socket类接收和发送数据类接收和发送数据
Socket类是负责处理客户端通信的Java类。本文主要是介绍java使用Socket类接收和发送数据,具有一定的参
考价值,感兴趣的小伙伴们可以参考一下。
网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类。通过这个类可以连接到指定IP或域名的
服务器上,并且可以和服务器互相发送和接受数据。在本文及后面的数篇文章中将详细讨论Socket类的使用,内容包括
Socket类基础、各式各样的连接方式、get和set方法、连接过程中的超时以及关闭网络连接等。
在本文中,我们将讨论使用Socket类的基本步骤和方法。一般网络客户端程序在连接服务程序时要进行以下三步操作。
1. 连接服务器
2. 发送和接收数据
3. 关闭网络连接
一、连接服务器一、连接服务器
在客户端可以通过两种方式来连接服务器,一种是通过IP的方式来连接服务器,而另外一种是通过域名方式来连接服务器。
其实这两种方式从本质上来看是一种方式。在底层客户端都是通过IP来连接服务器的,但这两种方式有一定的差异,如果通过
IP方式来连接服务端程序,客户端只简单地根据IP进行连接,如果通过域名来连接服务器,客户端必须通过DNS将域名解析成
IP,然后再根据这个IP来进行连接。
在很多程序设计语言或开发工具中(如C/C++、Delphi)使用域名方式连接服务器时必须自己先将域名解析成IP,然后再通过
IP进行连接,而在Java中已经将域名解析功能包含在了Socket类中,因此,我们只需象使用IP一样使用域名即可。
通过Socket类连接服务器程序最常用的方法就是通过Socket类的构造函数将IP或域名以及端口号作为参数传入Socket类中。
Socket类的构造函数有很多重载形式,在这一节只讨论其中最常用的一种形式:public Socket(String host, int port)。从
这个构造函数的定义来看,只需要将IP或域名以及端口号直接传入构造函数即可。下面的代码是一个连接服务端程序的例子程
序:
package mysocket;
import java.net.*;
public class MyConnection
{
public static void main(String[] args)
{
try
{
if (args.length > 0)
{
Socket socket = new Socket(args[0], 80);
System.out.println(args[0] + "已连接成功!");
}
else
System.out.println("请指定IP或域名!");
}
catch (Exception e)
{
System.err.println("错误信息:" + e.getMessage());
}
}
}
在上面的中,通过命令行参数将IP或域名传入程序,然后通过Socket socket = new Socket(args[0], 80)连接通过命令行参数所
指定的IP或域名的80端口。由于Socket类的构造函数在定义时使用了throws,因此,在调用Socket类的构造函数时,必须使
用try…catch语句来捕捉错误,或者对main函数使用throws语句来抛出错误。
使用Socket类连接服务器可以判断一台主机有哪些端口被打开。下面的代码是一个扫描本机有哪些端口被打开的程序。
二、发送和接收数据二、发送和接收数据
在Socket类中最重要的两个方法就是getInputStream和getOutputStream。这两个方法分别用来得到用于读取和写入数据的
InputStream和OutputStream对象。在这里的InputStream读取的是服务器程序向客户端发送过来的数据,而OutputStream是
客户端要向服务端程序发送的数据。
在编写实际的网络客户端程序时,是使用getInputStream,还是使用getOutputStream,以及先使用谁后使用谁由具体的应用
决定。如通过连接邮电出版社网站(www.ptpress.com.cn)的80端口(一般为HTTP协议所使用的默认端口),并且发送一个字
符串,最后再读取从www.ptpress.com.cn返回的信息。
package mysocket;
import java.net.*;
import java.io.*;




















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0