程序清单 codes/ / /Client java
public class Client
{
public static void main(String[] args)
throws IOException
{
Socket socket = new Socket( )
//将Socket对应的输入流包装成BufferedReader
BufferedReader br = new BufferedReader(
new InputStreamReader(socket getInputStream()))
//进行普通IO *** 作
String line = br readLine()
System out println( 来自服务器的数据 + line)
//关闭输入流 socket
br close()
socket close()
}
}
上面程序中粗体字代码是使用ServerSocket和Socket建立网络连接的代码 斜体字代码是通过Socket获取输入流 输出流进行通信的代码 通过程序不难看出 一旦使用ServerSocket Socket建立网络连接之后 程序通过网络通信与普通IO并没有太大的区别
先运行上面程序中的Server类 将看到服务器一直处于等待状态 因为服务器使用了死循环来接受来自客户端的请求 再运行Client类 将可看到程序输出 来自服务器的数据 您好 您收到了服务器的新年祝福! 这表明客户端和服务器端通信成功
上面程序为了突出通过ServerSocket和Socket建立连接 并通过底层IO流进行通信的主题 程序没有进行异常处理 也没有使用finally块来关闭资源
实际应用中 程序可能不想让执行网络连接 读取服务器数据的进程一直阻塞 而是希望当网络连接 读取 *** 作超过合理时间之后 系统自动认为该 *** 作失败 这个合理时间就是超时时长 Socket对象提供了一个setSoTimeout(int timeout)来设置超时时长 如下的代码片段所示
Socket s = new Socket( )
//设置 秒之后即认为超时
s setSoTimeout( )
当我们为Socket对象指定了超时时长之后 如果在使用Socket进行读 写 *** 作完成之前已经超出了该时间限制 那么这些方法就会抛出SocketTimeoutException异常 程序可以对该异常进行捕捉 并进行适当处理 如下代码所示
try
{
//使用Scanner来读取网络输入流中的数据
Scanner scan = new Scanner(s getInputStream())
//读取一行字符
String line = scan nextLine()
…
}
//捕捉SocketTimeoutException异常
catch(SocketTimeoutException ex)
{
//对异常进行处理
…
}
假设程序需要为Socket连接服务器时指定超时时长 即经过指定时间后 如果该Socket还未连接到远程服务器 则系统认为该Socket连接超时 但Socket的所有构造器里都没有提供指定超时时长的参数 所以程序应该先创建一个无连接的Socket 再调用Socket的connect()方法来连接远程服务器 而connect方法就可以接受一个超时时长参数 如下代码所示
//创建一个无连接的Socket
Socket s = new Socket()
//让该Socket连接到远程服务器 如果经过 秒还没有连接到 则认为连接超时
s connconnect(new InetAddress(host port) )
返回目录 疯狂Java讲义
编辑推荐
Java程序性能优化 让你的Java程序更快 更稳定
新手学Java 编程
Java程序设计培训视频教程
lishixinzhi/Article/program/Java/hx/201311/27265
TCP/IP不用去连接了,K28不带这个功能,
232/485连接,你有线吗?一头是水晶头的,一头是232端口的,
老的K28两头都是232 的线,新的K28是带USB的,所以你想连接232或是485
我还得看你的机器是什么时候的
中控科技----------张工
具体的 *** 作方法如下:首先打开设置>iCloud——接下将通讯录这一栏关闭——选择保留在我的iPhone——打开通讯录——进入设置,点击邮件、通讯录、日历然后查看——显示为“开”点击关闭即可。
手机通讯录不见了还有一个可能,那就是隐藏了联系人。我们可以查看是否设置了隐藏联系人,进入设置,点击邮件、通讯录、日历,然后查看在应用程序切换器中显示这一项,如果显示为“开”,只需要点击关闭即可。
延展阅读:其实突然消失的通讯录与您删除联系人导致的丢失情况是一样的,都是有机会恢复的。数据的删除其实是系统为了区分文件性质,将这部分源文件打上删除的标志。您只需要在这部分源文件未被覆盖之前,将它提取出来就可以进行恢复了。
普通用户借助第三方软件也是可以轻松搞定的。其他方法如下:长按住苹果手表侧面扁平的电源键按钮,直到出现苹果LOGO,就是开机了。
以上就是关于疯狂Java讲义:使用Socket进行通信[2]全部的内容,包括:疯狂Java讲义:使用Socket进行通信[2]、型号为K28的指纹考勤机,一登录上考勤管理程序就会看见有那个通信方式1、RS232 /RS485 2、TCP/IP连接不上、无法与帮助程序通信怎么办等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)