关于socket与serversocket中的输入输出流【转载】

关于socket与serversocket中的输入输出流

1,客户端的socket连接到服务器的套接字

socket mysocket=new socket(“127.0.0.1”,30000);用端口号30000连接到本机,当然这里可能发生io异常,注意抛异常

当套接字mysocket建立后,类似一条通信线路已经建立。

mysocket可以使用getInputStream()方法获得一个输入流,用此输入流来读服务器放入“线路”中的信息(但是不能读自己放入”线路”的信息,就像打电话的听筒)。当然与此对应的mysocket还可以用getOutputStream()方法来获得一个输出流,即拿到了自己的话筒,将自己的要输出的信息放入“线路”

实际中可能会把mysocket使用getInputStream()获得的输入流的信息放到另一个数据流(如DataInputStream)上,同样把DataOutputStream()流代替getOutputStream()方法

2,ServerSocket类

》客户端建立的socket连接只是负责呼叫服务器,那么服务器也要建立一个等待接受客户的套接字serversocket对象

ServerSocket server_socket=new ServerSocket(30000);与上面的端口号一致


服务器的ServerSocket对象server_socket建立以后,可以使用accept()方法接收客户的套接字呼应

》Socket sc=server_socket.accept();

所谓”接收”客户的套接字连接就是accept()方法会返回一个和客户端Socket对象相连接的Socket对象,服务器端的Socket对象sc使用getoutputstream()方法获得的输出流将指向客户端Socket对象mysocket使用getinoutstream()获得的那个输入流;

同样sc使用getinoutstream获得的输入流将指向mysocket使用getoutputstream获得的输出流



上图只是指示出一般的数据流向,实际中的mysocket求情连接和server_socket等待连接,其连接过程是一直相互的


>>使用套接字连接时,可能在一断没发出数据之前,另一端就开始尝试读取,这样就会堵塞本线程,直到读到信息为止

同样,accept()方法也会堵塞线程

用完连接后注意close()方法关闭socket


4,将套接字放到线程中

因为线程容易堵塞,所以应该为每个套接字连接建立一个线程

例如:客户端使用Socket类不带参数的构造方法Socket()创建一个套接字对象,该对象要调用

public void connect(SocketAddress xxx) throws IOException

请求和参数SocketAddress 指定地址的套接字建立连接。

为使用该connect方法,可以使用SocketAddress的子类InetSocketAddress创建一个对象,InetSocketAddress的构造方法如下:

public InetSocketAddress(InetSocketAddress add,int port),

下面是简单的实例(不完整):

Socket socket=new Socket(); 
InetAddress addre=InetAddress.getByName(“127.0.0.1”);
InetSocketAddress socketAddress=new InetSocketAddress(addre,4331);
socket.connect(socketAddress);
当然实际中是自己写一些connect连接方法,可以嵌入自己的需要的一些功能(如添加对话框,登录框、进行验证等)

原文链接:https://blog.csdn.net/hll174/article/details/40195239

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据有价值的信息,以便明确客户的需求和指引企业的发展。
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据有价值的信息,以便明确客户的需求和指引企业的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值