`

Java TCP Socket编程模型

阅读更多

1、socket是网络编程的说法,既然是网络编程那么就有服务器端和客户端,首先创建两个类,TCPSocket.java用于当做服务器端,TCPClient.java用于当做客户端,

2、首先编写服务器端,在Java中提供java.net.ServerSocket类来当做网络服务器,构造函数需要一个网络接       口,以6666为例,代码如下:

ServerSocket ss = new ServerSocket(6666);   

    此时,服务器端已经能够监听客户端请求。

3、编写客户端,在Java中提供java.net.Socket类来当做网络客户端,构造函数需要IP地址和网络接口,这里     的     接口应指明是哪个服务器的接口,在本例中,应该是上面服务器中指定的6666,代码如下:

Socket s = new Socket("127.0.0.1", 6666);

    此时,客户端已经向服务器端发出连接请求。

4、客户端发出请求后,服务器端能够监听到,而要接受这个连接请求还要有如下代码:

Socket s = ss.accept();

    此时,服务器端和客户端已经能够连接上了。

 

服务器端完整代码:

import java.net.*;

public class TCPServer {
	public static void main(String[] args) throws Exception {
		ServerSocket ss = new ServerSocket(6666);
		Socket s = ss.accept();
		System.out.println("a client connect!");		
	}
}

 客户端完整代码:

import java.net.*;

public class TCPClient {
	public static void main(String[] args) throws Exception {
		Socket s = new Socket("127.0.0.1", 6666);
	}
}

 在运行本例时,应先运行服务器端,然后运行客户端。

当客户端发送一次连接请求后,服务器端接受到后,服务器就停止了,这不符合服务器接受多个用户的要求,所以更改服务器端代码:

import java.net.*;

public class TCPServer {
	public static void main(String[] args) throws Exception {
		ServerSocket ss = new ServerSocket(6666);
		while(true) {
			Socket s = ss.accept();
			System.out.println("a client connect!");
		}
		
	}
}

 accept()方法是阻塞式的方法,只要没有连接请求就会一直等下去,直到有客户端的连接请求发过来,接受之后经过while循环在等下一个请求,经过这个死循环就能实现接受多个用户的连接请求。

 

以下是用Java数据流由客户端向服务器端发送消息的超小型demo:

服务器端:

import java.net.*;
import java.io.*;

public class TCPServer {
	public static void main(String[] args) throws Exception {
		ServerSocket ss = new ServerSocket(6666);
		while(true) {
			Socket s = ss.accept();
			System.out.println("a client connect!");
			DataInputStream dis = new DataInputStream(s.getInputStream());
			System.out.println(dis.readUTF());
			dis.close();
			s.close();
		}
		
	}
}

 客户端:

import java.net.*;
import java.io.*;

public class TCPClient {
	public static void main(String[] args) throws Exception {
		Socket s = new Socket("127.0.0.1", 6666);
		OutputStream os = s.getOutputStream();
		DataOutputStream dos = new DataOutputStream(os);
		Thread.sleep(30000);
		dos.writeUTF("hello server!");
		dos.flush();
		dos.close();
		s.close();
	}
}

 

 

1
3
分享到:
评论

相关推荐

    socket通讯汇总

    用JAVA实现基于TCP的SOCKET编程 pdf 用Java实现基于TCPIP协议的网络通信程序 pdf 一种基于JAVA多线程的即时显示策略 pdf 利用Java实现网络通信 pdf 利用Java进行网络编程 pdf 利用JAVA的SOCKET实现网上交谈 pdf...

    Java网络socket编程详解.doc

    网络的分层 IP、TCP和UDP Internet 客户/服务器模型 URI HTML、SGML和XML HTTP   MIME媒体类型 服务器端程序

    socket通讯资料汇总

    用JAVA实现基于TCP的SOCKET编程.pdf 用Java实现基于TCPIP协议的网络通信程序.pdf 一种基于JAVA多线程的即时显示策略.pdf 利用Java实现网络通信.pdf 利用Java进行网络编程.pdf 利用JAVA的SOCKET实现网上交谈.pdf...

    三步学会Java Socket编程

     java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK-1.3文档。  . Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端...

    mirrors-hp-socket-master.zip_java udp_python udp_socket_socket 高

    Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言...

    基于javatcpsocket通信的拆包和装包源码-NettyTree:网状树

    socket通信的拆包和装包源码 NettyTree 搭建一个基于Netty的通信框架 NIO:非阻塞式IO BIO:阻塞式IO 1) TCP粘包、拆包 2)编解码技术 1)Java序列化 2)业界主流的编解码框架 Thrift Protobuf 3) Websocket 5)...

    HP-Socket5.3.2

    HP-Socket是一套通用的高性能TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的TCP/UDP/HTTP通信系统,提供C/C++、C#、Delphi、E(易语言)、Java、Python等编程语言...

    Java编程语言详细教程

    ◇8.3 基于Socket的低层次Java网络编程 ◇本讲小结 ◇课后习题 ★ 第九讲 JavaBean和RMI ◇课前索引 ◇9.1 JavaBean的基本概念 ◇9.2 JavaBean开发简介 ◇9.3 RMI的基本概念和编程简介 ◇9.4 EJB简介 ◇本...

    SOCKET聊天系统分析设计

    针对当前中小型企业办公人员对即时通讯软件要求较低等问题, 提出了一种基于Java平台下的网络聊天系统的设计与实现方案,对系统进行了整体设计和详细设计,该系统主要通过Java Socket网络编程实现通信,具有速度快,高...

    socket编程集萃

    事实上网络编程简单的理解就是两台计算机相互通讯数据而已,对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了,Java SDK提供一些相对简单的Api来完成这些工作。Socket就是其中之一,...

    SOCKET套接编程实验

    1. SOCKET编程:用C、C++、JAVA等语言编写SOCKET程序实现编写基于C-S架构的UDP或TCP数据通信程序,例如聊天室。 2. SSL安全SOCKET编程:用C、C++、JAVA等语言进行基于服务器客户模型的SSL安全套接字编程(例如Web...

    Hp-Socket For E 5.3.2 高性能TCP/UDP通信组件 源码+模块+例程

    Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言...

    基于HP_Socket框架的socket通讯源码

    Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言...

    Hp-Socket For E 5.4.2 高性能TCP/UDP通信组件 源码+模块+例程

    Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言...

    HP-Socket下载

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口...

    java网络编程技术课程设计.doc

    目前较流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务 器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般 作为守护进程始终运行,监听网络端口,一旦有客户...

    HP-Socket-v3.2.3

    HP-Socket 是一套通用的高性能 TCP/UDP Socket 框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口...

    HP-Socket-master-V5.4

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。...

    HP-Socket-V5.4

    Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程...

Global site tag (gtag.js) - Google Analytics