一、连接
首先,在服务器中创建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();
相关推荐
Android网络调试软件源码,采用TCP协议通信,APP中选择客户端socket或者服务器ServerSocket后,进行两者通信,实现聊天功能,代码易拓展,可以拓展成app与wifi设备、单片机通信;app与电脑端网络调试软件通信
Socket和ServerSocket是Java网络编程中的核心组件,用于实现客户端和服务器之间的通信。在这个实践案例中,我们将深入探讨这两个类的使用以及如何构建一个简单的聊天应用。首先,我们需要理解Socket和ServerSocket的...
在Java编程语言中,Socket和ServerSocket是网络通信的核心组件,它们主要用于实现客户端与服务器之间的连接。本示例提供了一个基础的Socket/Serversocket应用程序,帮助开发者理解如何使用这两个类来构建基本的TCP...
Socket和ServerSocket是Java编程语言中的两个核心网络通信类,它们在实现客户端-服务器应用程序时起着关键作用。本文将深入探讨这两个类的功能、用法以及如何在实际项目中使用它们。 首先,让我们理解ServerSocket...
在Java编程语言中,`Socket`和`ServerSocket`是用于网络通信的重要组件,它们构成了基于TCP协议的基础网络通信框架。下面将详细讲解这两个类及其在实际应用中的使用。 `ServerSocket`是Java中的服务器端套接字类,...
总结来说,基于TCP的Java Socket&ServerSocket通信是Java网络编程的基础,适用于各种需要可靠、有序数据传输的场景。通过理解TCP协议的特性,以及熟练使用Java的Socket和ServerSocket类,开发者可以构建稳定、高效的...
Java网络编程是开发分布式应用程序的关键技术之一,其中Socket和ServerSocket是核心组件,它们使得Java程序能够进行网络通信。在本文中,我们将深入探讨Socket、ServerSocket以及客户端/服务器(C/S)模式。 首先,...
Socket和ServerSocket是Java编程语言中用于网络通信的重要类,它们是Java的Socket API的核心组成部分。这个"socket-serversocket"资源可能包含了一系列的代码示例,帮助初学者理解如何在客户端和服务器之间建立连接...
在Java中,`Socket`和`ServerSocket`是进行TCP通信的核心类。`ServerSocket`用于服务器端,监听特定端口,等待客户端的连接请求;而`Socket`则用于客户端,用于建立与服务器的连接并进行数据交换。 首先,我们需要...
Android完全支持JDK本身的TCP,UDP网络通信API,也可以使用ServerSocket,Socket来建立基于TCP/IP协议的网络通信,也可以使用DatagramSocket,Datagrampacket来建 立基于UDP协议的网络通信
总的来说,通过理解TCP的状态机和利用C++与WinSock,我们可以实现两台计算机之间的可靠通信。在实际项目中,可能还需要考虑异常处理、多线程、并发连接、数据加密等复杂情况,但以上基础步骤为理解双机通信的基本...
Java Socket和ServerSocket是Java网络编程中的核心组件,它们用于实现客户端和服务器之间的通信。在这个多线程聊天室系统中,这两个类被充分利用,构建了一个可以让多个客户端同时在线交流的平台。下面将详细阐述这...
"Android+PC Socket通信"指的是通过TCP Socket协议实现Android设备(手机客户端)与个人计算机之间的数据传输。Socket通信允许应用程序之间建立端到端的连接,进行双向数据交换,非常适合用于实时通讯、文件传输等...
ServerSocket用于监听客户端的连接请求,而Socket则用于与服务器建立连接并进行数据传输。 1. **创建ServerSocket** 在服务器端,我们需要创建一个ServerSocket实例,并指定一个端口号。这个端口号必须是未被其他...
- 当客户端连接后,`accept()`方法返回一个Socket对象,通过该对象可以与客户端进行通信。 - 在服务器端,通常会为每个新连接创建一个新的线程来处理客户端的输入和输出,这样服务器可以同时处理多个客户端。 2. ...
在Java编程语言中,`ServerSocket`和`Socket`是实现网络通信的核心类,它们用于构建客户端/服务器架构的应用程序,比如一个简单的聊天系统。在这个系统中,`ServerSocket`扮演服务器端的角色,监听特定端口上的连接...
Socket接口是操作系统提供的网络通信API,允许应用程序通过TCP/IP协议栈与其他计算机进行数据交换。本文将详细介绍Windows下的Socket通信代码,包括客户端和服务器端的实现,并适合初学者学习。 首先,我们要理解...
当有客户端发起连接时,ServerSocket会接受这个连接并返回一个新的Socket对象,这样服务器端就可以通过这个Socket对象与客户端进行数据交互。同时,服务器端需要维护一个线程池来处理多个客户端的并发连接,确保聊天...
5. **关闭连接**:通信完成后,记得关闭Socket和ServerSocket,释放资源。 **Android中的Socket IPC** 1. **权限设置**:在AndroidManifest.xml中,需要添加INTERNET权限,以允许应用进行网络操作:`...
在IT行业中,Android和...总的来说,Android与电脑的Socket通信涉及到网络编程的基础知识,包括Socket的创建与连接、输入/输出流的使用,以及两端的数据处理。理解并掌握这些知识,对于开发跨平台的网络应用至关重要。