正处于网络环境下的两个程序,它们之间通过一个交互的连接来实现数据通信。每一个连接的通信端叫做一个Socket。一个完整的Socket通信程序应该包含以下几个步骤:
①创建Socket;
②打开连接到Socket的输入输出流;
④按照一定的协议对Socket进行读写操作;
④关闭Socket。
Socket通信分两部分:服务器端和客户端。服务器端必须优先启动,然后等待socket连接,如果达成连接则开始执行输入输出操作,通过输入流获取客户端的请求信息,通过输出流返回客户端信息。客户端则只需创建一个Socket指定服务器的ip和端口号即可。
下面看服务器代码:
public class SocketServer {
public static int port = 3333;
public static String ip = "172.30.1.101";
public static void main(String[] args) throws IOException {
//①启动服务器
ServerSocket server = new ServerSocket(port);
System.out.println("server running...");
//②监听Socket
Socket socket = server.accept();
//③IO流
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
String client = null;
//如果接收到客户端的exit信号则关闭Socket
while(!"exit".equalsIgnoreCase(client = br.readLine())){
System.out.println("from client say:"+client);
pw.println("server get your info :" +client);
pw.flush();
}
br.close();
pw.close();
socket.close();
server.close();
}
}
下面看客户端代码:
public class SocketClient {
public static void main(String[] args) throws IOException {
//连接服务器
Socket socket = new Socket(SocketServer.ip,SocketServer.port);
System.out.println("client running...");
System.out.println("-----insert your info:");
//用户在控制台输入向服务器发送的信息
BufferedReader brConsole = new BufferedReader(new InputStreamReader(System.in));
//IO流
PrintWriter pw = new PrintWriter(socket.getOutputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String server = null;
//如果用户输入exit则关闭Socket
while(!"exit".equalsIgnoreCase(server = brConsole.readLine())){
pw.println(server);
pw.flush();
System.out.println("from server say:"+br.readLine());
}
//当用户输入exit时,把exit信息发送给服务器,服务器关闭当前Socket
pw.println(server);
pw.flush();
pw.close();
brConsole.close();
br.close();
socket.close();
}
}
需要注意的是:
测试时,首先启动服务器,然后启动客户端即可;
使用PrintWriter写数据的时候务必使用println,因为对方使用BufferReader的readline来取数据,如果使用print则BufferReader读取不到数据。
这只是基础实例,不支持并发。
分享到:
相关推荐
Java Socket 聊天通信演示代码 Java Socket 聊天通信演示代码
2个窗口分别模拟服务器端和客户端,基于TCP协议的socket通信,实现互相通信
java.net包socket通信,基础客户端 和 服务端的通信传输实现
基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java ...
java Socket通信实现
java即时通信界面本 有简单界面 带GUI
java和C#之间基于Socket的通信,包括java客户端C#服务器和C#客户端java服务器,能进行简单的通信
用java 实现的一个socket通信程序,包括服务端和客户端俩个部分。代码注释很详细。
聊天室的网络通信,socket实现,源码中采用127.0.0.1:9000,用时先开服务端,再开客户端
Java客户端,c++服务端通过socket进行网络通信,传输数据
Java编程环境下的Socket通信详解
java做的通信程序,实现Server与client的通信。
java与c++通过socket通信。其中java作为客户端,c++作为服务器。主要解决了C++中的结构体在java中如何实现和模拟。还有int,float,及字符串的处理。极具代表性。
SpringMVC的Socket实现+Java Tomcat websocket实现+Java Socket通信实现 +Java UDP通信实现。websocket_study.rar 为springMVC版本的socket实现 websocket02.rar 里面包含tomcat的websocket实现+java socket双向通信...
用java编写的基于socket的进程间通信程序 客户端服务器聊天小程序
java网络通信 socket http
java和c++通信,支持多用户并发,采用java非阻塞式socket通信。
实现了nodejs与java的相互通信功能,包括nodeClient访问javaServer,以及javaClient访问nodeServer,亲测有效,如果有问题请在下方留言,一定及时解答
java socket通信 java socket通信