`

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编程实践聊天,服务器和客户端频繁通信

    使用Socket,ServerSocket编程

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

    c/s结构的订票系统

    运用 Socket 与ServerSocket通信,用的是Java Swing 写的界面

    Socket通信样例代码

    Socket通信中URL,InetAddress,Socket,ServerSocket类的简单使用

    ServerSocket简单实现

    Server Socket用于服务器端,Server Socket通信是建立网络连接时使用的。在 连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,...

    最简单的socket服务器跟客户端通信

    最简单的socket服务器跟客户端通信 socket clent socketservice ServerSocket

    delphi 异步socket(ClientSocket,ServerSocket)实例

    delphi 异步socket(ClientSocket,ServerSocket)实例,在XE2和XE7 上测试通过,其它没有测试。

    Android中socket通信简单实现

    Android中socket通信简单实现 socket通信需要有一个服务器和客户端,可以把同一个APP作为服务器跟客户端,也可以分开成两个APP。 先上个图: 这里以一个APP作为服务器跟客户端为示例 1、添加网络访问权限 2、写...

    套接字(Socket)通信TCP聊天程序(含界面)

    使用套接字(Socket、ServerSocket)创建一个应用程序,实现网络数据的传输。 实现客户端和服务器端的通信。 含客户端服务器图形用户界面

    基于异步IO的socket通信程序

    包括三对基于异步IO的socket-serversocket,分别是socket通信的抽象,针对字符串的通信,抽象为对象的通信。所有测试基于控制台。

    Java 实例 - ServerSocket 和 Socket 通信实例源代码+详细指导教程.zip

    Java 实例 - ServerSocket 和 Socket 通信实例源代码+详细指导教程.zip

    实现nodejs与java的socket相互通信

    实现了nodejs与java的相互通信功能,包括nodeClient访问javaServer,以及javaClient访问nodeServer,亲测有效,如果有问题请在下方留言,一定及时解答

    Java多线程_ServerSocket服务端与客户端通信案例

    ServerSocket服务端与客户端通信DEMO,讲述如何使用多线程的方式,使得多个客户端与服务端通信。

    [Java]详解Socket和ServerSocket学习笔记

    即时类应用或者即时类的游戏,HTTP协议很多时候无法满足于我们的需求,这会,Socket对于我们来说就非常实用了。本篇文章主要介绍了Socket和ServerSocket,有兴趣的可以了解一下。

    利用socket开发基于TCP的c/s通信程序

    利用socket开发基于TCP的的C/S通信程序,一个是服务器,一个是客户,服务器和客户间可以进行通信

    利用Java Sock实现C/S通信

    本程序主要利用Java Socket来实现双机通信,实现一个简单的服务器,客户端聊天通信工具。

    三步学会Java Socket编程

     所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。  以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。...

    java socket通信编程

    Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,...

    Android移动开发-使用Socket进行通信的实现

    客户端通常可以使用Socket的构造器来连接到指定服务器,其实客户端程序也非常简单,它仅仅使用Socket建立与指导IP地址、指定端口的连接,并使用Socket获取输入流读取数据。该客户端程序是一个Android应用,因此还是...

Global site tag (gtag.js) - Google Analytics