北理工 通信网络基础大作业
和低层的数据传送, 有两种实现方式, 一种是通过设备驱动程序直接向物理传输介质发送数据, 另一种是借助其他的网络子系统进行数据传送。
3 基于SOCKET机制的通信过程分析
一个完整的SOCKET连接可以描述为5个要素:协议、本地地址、本地端口、远地地址、远地端口。服务器与用户端基于SOCKET机制的通信过程见图1:
图1:基于SOCKET机制的通信过程框图
图1 是一个典型的面向连接的Socket 通信机制的示意图。它采用客户/ 服务器模式, 由服务器方先建立自己的Socket 半相关 (建立Socket 并将该Socket 连接到某个端口上) , 并进入监听状态, 同时监听是否有与自已端口相对应的连接请求。 连接是客户方发起的,客户方在建立自己的半相关后,向服务器发
北理工 通信网络基础大作业
起连接,服务器在检测到连接以后, 接受连接, 这样就建立起来一个完整的Scoket 连接。从图1 可以看到, 服务器方必须首先启动, 然后守候在某一端口上监听客户方的连接请求, 一旦连接建立, 就可以像普通的流机制那样进行读写, 读写完毕就结束Socket 连接。
4 实现该系统的JAVA程序
下面是用JAVA语言实现的基于SOCKET机制的TCP/IP数据文件传输过程,该程序主要思想如下:
(1)、服务器端开启对socke的读写线程,用来监听客户端的通信。 (2)、服务器端保存客户端登录的信息,使用一个map来装,保存维护该客户端的线程名、线程。
(3)、当客户端发来信息,进行分析,分析出是给哪一个客户端(维护客户端的线程)发送的信息,然后服务器端调用该线程的发送方法,发送给对应的客户端。
(4)、信息发送完毕时,结束连接。
基于SOCKET机制的TCP/IP数据文件传输JAVA程序如下: 服务器端:Main Server
package com.wang.server; import .ServerSocket; import .Socket;
import com.wangcanpei.util.Util; public class MainServer {
public static void main(String[] args) throws Exception { ServerSocket serverSocket=new ServerSocket(8888); while(true){
Socket socket=serverSocket.accept(); System.out.println(socket.getPort());
ServerThread serverThread=new ServerThread(socket); System.out.println(serverThread.getName()); serverThread.start();
Util.map.put(serverThread.getName(),serverThread); } } }
------------------------------------------------------------------------------------------------