关闭

socket java

标签: socketjava网络编程
219人阅读 评论(0) 收藏 举报
分类:

《Java Network Programming》学习笔记之Socket篇:

Socket概念:

Sockets shield the programmer from low-level details of the network, such as error detection, packet sizes, packet retransmission, network addresses, and more.

Socket的一个重大作用是它帮我们屏蔽(搞定)了下层诸如错误检测,包的长度,包的重传,网络地址,(三次/四次)握手等诸多细节。


A socket is a connection between two hosts. It can perform seven basic operations:
• Connect to a remote machine
• Send data
• Receive data
• Close a connection
• Bind to a port
• Listen for incoming data
• Accept connections from remote machines on the bound port

Socket的几大操作: ####

  1. 与远程机器建立连接
  2. 发送数据
  3. 接收数据
  4. 关闭连接
  5. 绑定端口号
  6. 监听数据管道
  7. 从绑定的端口号获悉及允许来自远程机器的连接请求

其中前四个为客户端socket和服务器端socket共有的,后三个为服务器端socket专有。


Java程序中的socket:

Java programs normally use client sockets in the following fashion:
1. The program creates a new socket with a constructor.
2. The socket attempts to connect to the remote host.
3. Once the connection is established, the local and remote hosts get input and output streams from the socket and use those streams to send data to each other.This connection is full-duplex; both hosts can send and receive data simultaneously. What the data means depends on the protocol; different commands are sent to an FTP server than to an HTTP server. There will normally be some
agreed-upon hand-shaking followed by the transmission of data from one to the other.
4. When the transmission of data is complete, one or both sides close the connection. Some protocols, such as HTTP 1.0, require the connection to be closed after each request is serviced. Others, such as FTP, allow multiple requests to be processed in a single connection.

  1. 通过构造函数创建新的socket
  2. socket应该去连接远程主机
  3. 一旦连接被建立,本地和远程主机通过输入输出流进行数据的发送和接收。并且这个连接时全双工的–任意一方都可以同时进行发送和接收
  4. 数据传输完成后,某一方或者双方关闭该socket连接

socket通信路径

另外:附几个讲解Socket的博客链接:
http://www.cnblogs.com/dolphinX/p/3460545.html
http://goodcandle.cnblogs.com/archive/2005/12/10/294652.aspx
http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html

0
0
查看评论

Java socket的一个完整实例

    刚看了看socket的相关知识,现在找了一个实例看了看,想把它放到这里以便以后学习方便之用。文件1:SocketServer.java        ---->  &...
  • karem
  • karem
  • 2009-10-07 12:28
  • 15104

JAVA通信(1)-- 使用Socket实现文件上传与下载

客户端/** * 文件上传客户端 * * @author chen.lin * */ public class UploadClient extends JFrame { /** * */ private static final long seri...
  • lovoo
  • lovoo
  • 2016-04-21 14:41
  • 2968

java Socket简单聊天实现 —— 使用线程池及同步锁

现有的聊天室功能虽然已经完成,但是由于客户端的频繁连接与断开,会使得服务端频繁的创建及销毁线程。随着客户端的增加,服务端的线程也在增加,这无疑会对服务端的资源造成浪费,并且由于过多的线程导致的过度切换也会为服务端带来崩溃的风险。与此同时,多个线程会共享服务端的集合属性allOut,这里还存在着多线程...
  • qiuyang0607
  • qiuyang0607
  • 2017-03-01 20:08
  • 857

Java中socket传送中文乱码问题解决方法

在用socket传送中文的时候,经常会遇到乱码问题,令人头痛。解决方法其实很简单,客户端在接收时,对BufferedReader对象进行一些设置就OK了。代码如下: BufferedReader in = new BufferedReader(new&...
  • dongsheng186
  • dongsheng186
  • 2015-06-17 16:28
  • 1153

java socket连接以及发送和接收数据

/** * */ package socketTest2; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.Inpu...
  • lvyuan30276
  • lvyuan30276
  • 2015-12-14 21:39
  • 13838

Java Socket(六) 使用多线程实现多客户端的通信

问题一个服务端可以跟多个客户端通讯基本步骤1.服务器端创建ServerSocket方法,循环调用accept()方法等待客户端连接2.客户端创建socket和服务的请求连接3.服务端接受客户端的请求,建立专线连接4.建立连接的两个socket在一个单独的线程上对话5.服务器端继续等待新的连接创建一个...
  • u013007900
  • u013007900
  • 2015-12-27 11:02
  • 11793

Java Socket 通信(同步阻塞式I/O)

java实现socket通信比较简单,因为它提供了ServerSocket 和Socket类。如下为一个简单的实例:TimeServer与TimeClient1 TimeServerpublic class TimeServer { public static void main(String...
  • ouyang111222
  • ouyang111222
  • 2016-04-06 18:23
  • 2950

搭建Java的Socket服务器

文件:http://pan.baidu.com/share/link?shareid=835462713&uk=185595768
  • ns2250225
  • ns2250225
  • 2014-10-16 14:01
  • 7631

(java)Socket短连接双端通信

一、TCP连接简介 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接, 当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接, 连接的建立是需要三次握手的,而释放则需要4次握手, 所以说每个连接的建立都是需要资源消耗和时间消耗的 ​...
  • chaiqunxing51
  • chaiqunxing51
  • 2016-08-18 17:00
  • 1350

Java基于Socket的简单推送

做过安卓的肯定大多使用过推送,其实我们也可以通过socket做一个简单的推送平台,如果想考虑高并发的情况可以采用mina或者netty等开源框架(如果有时间我会把关于minasocket的文章补上来)。这里就先用Java原生的socket简单实现以下。其实推送的原理也无非就是轮询和长链接,这里是服务...
  • l_vaule
  • l_vaule
  • 2016-05-07 15:54
  • 3156
    个人资料
    • 访问:239330次
    • 积分:3820
    • 等级:
    • 排名:第9954名
    • 原创:170篇
    • 转载:19篇
    • 译文:0篇
    • 评论:14条
    最新评论