一、连接
首先,在服务器中创建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编程实践聊天,服务器和客户端频繁通信
Android完全支持JDK本身的TCP,UDP网络通信API,也可以使用ServerSocket,Socket来建立基于TCP/IP协议的网络通信,也可以使用DatagramSocket,Datagrampacket来建 立基于UDP协议的网络通信
运用 Socket 与ServerSocket通信,用的是Java Swing 写的界面
Socket通信中URL,InetAddress,Socket,ServerSocket类的简单使用
Server Socket用于服务器端,Server Socket通信是建立网络连接时使用的。在 连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,...
最简单的socket服务器跟客户端通信 socket clent socketservice ServerSocket
delphi 异步socket(ClientSocket,ServerSocket)实例,在XE2和XE7 上测试通过,其它没有测试。
Android中socket通信简单实现 socket通信需要有一个服务器和客户端,可以把同一个APP作为服务器跟客户端,也可以分开成两个APP。 先上个图: 这里以一个APP作为服务器跟客户端为示例 1、添加网络访问权限 2、写...
使用套接字(Socket、ServerSocket)创建一个应用程序,实现网络数据的传输。 实现客户端和服务器端的通信。 含客户端服务器图形用户界面
包括三对基于异步IO的socket-serversocket,分别是socket通信的抽象,针对字符串的通信,抽象为对象的通信。所有测试基于控制台。
Java 实例 - ServerSocket 和 Socket 通信实例源代码+详细指导教程.zip
实现了nodejs与java的相互通信功能,包括nodeClient访问javaServer,以及javaClient访问nodeServer,亲测有效,如果有问题请在下方留言,一定及时解答
ServerSocket服务端与客户端通信DEMO,讲述如何使用多线程的方式,使得多个客户端与服务端通信。
即时类应用或者即时类的游戏,HTTP协议很多时候无法满足于我们的需求,这会,Socket对于我们来说就非常实用了。本篇文章主要介绍了Socket和ServerSocket,有兴趣的可以了解一下。
利用socket开发基于TCP的的C/S通信程序,一个是服务器,一个是客户,服务器和客户间可以进行通信
本程序主要利用Java Socket来实现双机通信,实现一个简单的服务器,客户端聊天通信工具。
所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。...
Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,...
客户端通常可以使用Socket的构造器来连接到指定服务器,其实客户端程序也非常简单,它仅仅使用Socket建立与指导IP地址、指定端口的连接,并使用Socket获取输入流读取数据。该客户端程序是一个Android应用,因此还是...