java socket io 方面的基础问题

问题描述

传统的Socket是阻塞的,这样的话服务器对每个Socket都需要建立一个线程来操作。请问这句话如何理解,前半句怎么解释?后半句跟前一句有何必然联系?

解决方案

“传统的Socket是阻塞的”意思是说:当服务器端执行到ServerSocket serverSocket = new ServerSocket(8888);Socket socket = serverSocket.accept();/*执行到这一句的时候,这一句下面的所有代码都不会执行,也就是说,此时阻塞了。意思就是说:服务器正在8888端口进行监听,如果没有客户端来请求,那么我就一直在这监听,直到客户端发送请求了,我才会执行下面的代码。那么什么时候客户端发送请求呢?*/当客户端执行Socket socket = new Socket("服务器地址",8888);//此时,就代表着客户端发送请求。那么这个时候,服务器端阻塞的下面的代码就可以顺利执行了。至于后半句:意思是说,一个socket相当于一条线路,在这一条线路上有两头,一头是客户端,一头是服务器端,所以通话的只有这两方,这两方就把当前的这一条线路(socket)占用了,其他的客户端要是想和服务器端通信,很显然,必须和服务器端再建立一条新的线路(socket),对不对?那么对于我们第一次建立的线路,在这条线路上保存着客户端和服务器端这两头的信息,如果要通信,我就要通过这一条线路(socket)来获得io,然后才能通信。对于第二条线路,他们要通信,就要在第二条线路建立相应的IO才可以。现在是两条线路了,我们都知道在正常模式下服务器端是单线程的,那么这两条线路是无法同时进行相应的IO操作的。但是如果要是把第一条线路(socket)用一个线程来操作,把第二条线路(socket)用另一个线程来操作。他们不就互不影响而且能同时运行了吗。所以:服务器对每个Socket都需要建立一个线程来操作如果还是不理解的话,我给你发一个小Demo邮箱:fatherican@sina.com
解决方案二:
个人的理解:引用传统的Socket是阻塞的就是服务器一直处于监听状态,等待客户端的请求。而服务器对每个Socket都需要建立一个线程来操作是指多个客户端请求时,每个请求都有一个单独的线程处理。

时间: 2024-10-22 00:25:03

java socket io 方面的基础问题的相关文章

java Socket实现简单在线聊天(二)

接<java Socket实现简单在线聊天(一)>,在单客户端连接的基础上,这里第二步需要实现多客户端的连接,也就需要使用到线程.每当有一个新的客户端连接上来,服务端便需要新启动一个线程进行处理,从而解决之前的循环读取中造成阻塞的问题. 写线程通常有两种方法,集成Thread或者实现runnable接口,原则上是能实现runnable的情况下就不继承,因为实现接口的方式更加灵活. 客户端代码相较之前没有变化,变得是服务端,因此这里便只贴出服务端代码: package chat.chat; im

求一个例子:java socket 采用ObjectInputStream序列化收发文件例子

问题描述 求一个例子:java socket 采用ObjectInputStream序列化收发文件例子 求一个:java socket 采用ObjectInputStream序列化收发文件例子求一个:java socket 采用ObjectInputStream序列化收发文件例子 解决方案 我参考 这个 例子 解决我的问题 http://bbs.csdn.net/topics/200033850 解决方案二: http://www.cnblogs.com/feiyun126/p/3921466.

基于Java Socket的自定义协议,实现Android与服务器的长连接(一)

一.基础知识准备 在正式给大家介绍自定义协议之前,我们先对网络传输和协议解析的相关知识点做一个基本的介绍,尽管这些知识点我们在学校里学过,但难免会有所遗忘,这里先做一个简单的介绍,以便对后文的内容理解更加顺畅. 1. 网络七层协议 OSI的7层从上到下分别是:7 应用层. 6 表示层. 5 会话层. 4 传输层. 3 网络层. 2 数据链路层. 1 物理层;其中高层(即7.6.5.4层)定义了应用程序的功能,下面3层(即3.2.1层)主要面向通过网络的端到端的数据流.应用层常见的协议有:HTTP

利用socket.io实现消息实时推送

项目背景介绍 最近在写的项目中存在着社交模块,需要实现这样的一个功能:当发生了用户被点赞.评论.关注等操作时,需要由服务器向用户实时地推送一条消息.最终完成的项目地址为:socket-message-push,这里将介绍一下实现的思路及部分代码. 项目的流程中存在着这样的几个对象: 用 Java 实现的后端服务器 用 Node.js 实现的消息推送服务器 用户进行操作的客户端 事件处理的流程如下: 用户进行点赞操作时,后端服务器会进行处理,并向 Node.js 消息推送服务器发送一条消息 Nod

Java核心技术 卷Ⅰ 基础知识(原书第10版)

Java核心技术系列 Java核心技术 卷Ⅰ 基础知识 (原书第10版) Core Java Volume I-Fundamentals (10th Edition) [美] 凯S.霍斯特曼(Cay S. Horstmann) 著 周立新 陈 波 叶乃文 邝劲筠 杜永萍 译 图书在版编目(CIP)数据 Java核心技术 卷Ⅰ 基础知识(原书第10版) / (美)凯S. 霍斯特曼(Cay S. Horstmann)著:周立新等译. -北京:机械工业出版社,2016.8 (Java核心技术系列) 书

Java socket编程入门

编程 第一章:学习提示 我适合学习这份教程吗 Socket提供了两台计算机之间进行通讯的机制,在James Gosling注意Java语言之前就已经很闻名了.Java语言使你更简单有效的使用Socket开发而无需了解操作系统的底层机制.大部分讨论Java编码的书籍都没有涉及这一主题,或者是只是"点到为止",留给读者大量的想象空间.这份教程就是让你了解在你的Java代码中如何更有效的使用Socket所需的知识.包含以下内容: •什么是Socket •它位于你的应用程序的哪些地方 •能正常

Java socket编程入门[1]

编程 第一章:学习提示 我适合学习这份教程吗 Socket提供了两台计算机之间进行通讯的机制,在James Gosling注意Java语言之前就已经很闻名了.Java语言使你更简单有效的使用Socket开发而无需了解操作系统的底层机制.大部分讨论Java编码的书籍都没有涉及这一主题,或者是只是"点到为止",留给读者大量的想象空间.这份教程就是让你了解在你的Java代码中如何更有效的使用Socket所需的知识.包含以下内容:•什么是Socket•它位于你的应用程序的哪些地方•能正常运行的

HTML5 Web socket和socket.io

HTML5的新特性,用于双向推送消息(例如网页聊天,手机推送消息等) 原理: client利用regular http请求webpage 请求的webpage 执行javascript脚本,open a connection to server. 有新的信息时服务器和客户端可以相互发送信息(Real-time traffic from the server to the client and from the client to the server   客户端 说明: readyState:

Java socket字节流传输示例解析_java

本文为大家分享了Java socket字节流传输示例,供大家参考,具体内容如下 服务端server端:  package com.yuan.socket; import java.io.*; import java.net.ServerSocket; import java.net.Socket; /** * Created by YUAN on 2016-09-17. */ public class TalkServer4Byte { private ServerSocket server;