`

Socket与ServerSocket的通信

    博客分类:
  • Java
阅读更多


一、连接
首先,在服务器中创建ServerSocket对象ss,对象ss调用accept方法的时候,可以得到一个Socket对象.
ServerSocket ss = new ServerSocket(613);// 不要使用80等其他程序常用端口,这里任选一个端口613
Socket st = ss.accept();
这是一个阻塞方法,如果accept不到一个客户端,他就一直会在这里等待客户端的连接,直到有一个客户端连上来才执行结束。
如果需要连接多个客户端,可以写while循环来执行ss.accept();

在客户端可以这样对其进行连接.
Socket st = new Socket("127.0.0.1", 613);// 服务器在本地,这里填写本地IP的字符串,后面加上端口.

到了这里,服务器和客户端就已经连接好了.

public class Server {

	public static void main(String[] args) {
		// 套接字,指定端口
		try {
			ServerSocket ss = new ServerSocket(613);// 不要使用80等其他程序常用端口
			System.out.println("服务器已启动,等待连接。。。");
			while (true) {
				// 必须等到有客户端连上,该方法才能执行完毕(阻塞方法)。接收到一个客户端对象
				Socket st = ss.accept();

				DealThread dt = new DealThread(st);
				dt.start();

			}
		} catch (BindException e) {
			System.out.println("端口使用中,关闭服务器程序重新开始");
			System.exit(0);
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
	}
}


public class DealThread extends Thread {

	boolean bConnected = true;
	OutputStream os;
	InputStream is;

	public DealThread(Socket st) {
		try {
			this.is = st.getInputStream();
			this.os = st.getOutputStream();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void run() {
		while (bConnected) {

                }
        }
}

 

 

客户端:

public void connectServer() {
		try {
			st = new Socket("127.0.0.1", 613);

			is = st.getInputStream();
			os = st.getOutputStream();
                 }
}

 
二、通信

通信即数据传输。
通过Socket对象,可以得到输入输出流。在这里需要注意的是,在服务端程序中用st.getInputStream()是得到了一个服务端的输入流,也就是这个流是用来读取客户端发过来的消息的,将客户端的消息读到服务器.同理,st.getOutputStream()就是将服务器的消息写到客户端去.

在客户端这边,同样用这个st.getInputStream();这是后得到的InputStream是从服务器读取数据到客户端的.

我们得到了这个流之后,可以将其包装成我们需要的流.对其进行write,read操作.即可实现客户端与服务端的通信.

三、一般的写法
当客户端连接到了服务器,服务器需要单独启动一个线程对客户端的消息进行处理,这个线程用来接受客户端的消息并将其进行处理(可能需要转发给其他客户端)

而客户端这边也需要单独开启一个线程来接受消息。

四、常用方法:
获得客户端IP地址
st.getRemoteSocketAddress();
获得客户端名字:
st.getInetAddress().getHostName();

 

1
2
分享到:
评论

相关推荐

    Socket与ServerSocket通信(TCP协议)

    Android网络调试软件源码,采用TCP协议通信,APP中选择客户端socket或者服务器ServerSocket后,进行两者通信,实现聊天功能,代码易拓展,可以拓展成app与wifi设备、单片机通信;app与电脑端网络调试软件通信

    Socket与ServerSocket编程实践聊天

    Socket和ServerSocket是Java网络编程中的核心组件,用于实现客户端和服务器之间的通信。在这个实践案例中,我们将深入探讨这两个类的使用以及如何构建一个简单的聊天应用。首先,我们需要理解Socket和ServerSocket的...

    一个简单的socket/serversocket例子

    在Java编程语言中,Socket和ServerSocket是网络通信的核心组件,它们主要用于实现客户端与服务器之间的连接。本示例提供了一个基础的Socket/Serversocket应用程序,帮助开发者理解如何使用这两个类来构建基本的TCP...

    Socket+ServerSocket代码

    Socket和ServerSocket是Java编程语言中的两个核心网络通信类,它们在实现客户端-服务器应用程序时起着关键作用。本文将深入探讨这两个类的功能、用法以及如何在实际项目中使用它们。 首先,让我们理解ServerSocket...

    socket-ServerSocket例子

    在Java编程语言中,`Socket`和`ServerSocket`是用于网络通信的重要组件,它们构成了基于TCP协议的基础网络通信框架。下面将详细讲解这两个类及其在实际应用中的使用。 `ServerSocket`是Java中的服务器端套接字类,...

    基于TCP的Socket&ServerSocket通讯

    总结来说,基于TCP的Java Socket&ServerSocket通信是Java网络编程的基础,适用于各种需要可靠、有序数据传输的场景。通过理解TCP协议的特性,以及熟练使用Java的Socket和ServerSocket类,开发者可以构建稳定、高效的...

    学习JAVA—网络编程之Socket、ServerSocket、C/S模式

    Java网络编程是开发分布式应用程序的关键技术之一,其中Socket和ServerSocket是核心组件,它们使得Java程序能够进行网络通信。在本文中,我们将深入探讨Socket、ServerSocket以及客户端/服务器(C/S)模式。 首先,...

    socket-serversocket

    Socket和ServerSocket是Java编程语言中用于网络通信的重要类,它们是Java的Socket API的核心组成部分。这个"socket-serversocket"资源可能包含了一系列的代码示例,帮助初学者理解如何在客户端和服务器之间建立连接...

    使用Socket和ServerSocket实现多人聊天的聊天室程序

    在Java中,`Socket`和`ServerSocket`是进行TCP通信的核心类。`ServerSocket`用于服务器端,监听特定端口,等待客户端的连接请求;而`Socket`则用于客户端,用于建立与服务器的连接并进行数据交换。 首先,我们需要...

    使用Socket,ServerSocket编程

    Android完全支持JDK本身的TCP,UDP网络通信API,也可以使用ServerSocket,Socket来建立基于TCP/IP协议的网络通信,也可以使用DatagramSocket,Datagrampacket来建 立基于UDP协议的网络通信

    利用Socket实现双机通信C++

    总的来说,通过理解TCP的状态机和利用C++与WinSock,我们可以实现两台计算机之间的可靠通信。在实际项目中,可能还需要考虑异常处理、多线程、并发连接、数据加密等复杂情况,但以上基础步骤为理解双机通信的基本...

    Java Socket/ServerSocket 多线程下聊天室系统

    Java Socket和ServerSocket是Java网络编程中的核心组件,它们用于实现客户端和服务器之间的通信。在这个多线程聊天室系统中,这两个类被充分利用,构建了一个可以让多个客户端同时在线交流的平台。下面将详细阐述这...

    android+pc socket通信

    "Android+PC Socket通信"指的是通过TCP Socket协议实现Android设备(手机客户端)与个人计算机之间的数据传输。Socket通信允许应用程序之间建立端到端的连接,进行双向数据交换,非常适合用于实时通讯、文件传输等...

    Android中Socket通信

    ServerSocket用于监听客户端的连接请求,而Socket则用于与服务器建立连接并进行数据传输。 1. **创建ServerSocket** 在服务器端,我们需要创建一个ServerSocket实例,并指定一个端口号。这个端口号必须是未被其他...

    Java Socket 聊天通信演示代码

    - 当客户端连接后,`accept()`方法返回一个Socket对象,通过该对象可以与客户端进行通信。 - 在服务器端,通常会为每个新连接创建一个新的线程来处理客户端的输入和输出,这样服务器可以同时处理多个客户端。 2. ...

    socket serverSocket

    在Java编程语言中,`ServerSocket`和`Socket`是实现网络通信的核心类,它们用于构建客户端/服务器架构的应用程序,比如一个简单的聊天系统。在这个系统中,`ServerSocket`扮演服务器端的角色,监听特定端口上的连接...

    windows下socket通信代码

    Socket接口是操作系统提供的网络通信API,允许应用程序通过TCP/IP协议栈与其他计算机进行数据交换。本文将详细介绍Windows下的Socket通信代码,包括客户端和服务器端的实现,并适合初学者学习。 首先,我们要理解...

    java socket实现双机通信 有界面

    当有客户端发起连接时,ServerSocket会接受这个连接并返回一个新的Socket对象,这样服务器端就可以通过这个Socket对象与客户端进行数据交互。同时,服务器端需要维护一个线程池来处理多个客户端的并发连接,确保聊天...

    Android 基于Socket 的IPC通信

    5. **关闭连接**:通信完成后,记得关闭Socket和ServerSocket,释放资源。 **Android中的Socket IPC** 1. **权限设置**:在AndroidManifest.xml中,需要添加INTERNET权限,以允许应用进行网络操作:`...

    android与电脑socket通信的代码

    在IT行业中,Android和...总的来说,Android与电脑的Socket通信涉及到网络编程的基础知识,包括Socket的创建与连接、输入/输出流的使用,以及两端的数据处理。理解并掌握这些知识,对于开发跨平台的网络应用至关重要。

Global site tag (gtag.js) - Google Analytics