以下实现的是java的客户端与服务器的连接,并在客户端发送数据到服务器,服务器接收到数据后即时输出

下面是服务器端的代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
public static void main(String[] args) {
ServerSocket server = null ;
Socket socket = null ;
try {
try {
server = new ServerSocket(5000) ;
}catch(Exception e) {
e.printStackTrace() ;
}
try {
socket = server.accept() ;
}catch(Exception e) {
e.printStackTrace() ;
}
String line ;
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())) ;
line = br.readLine() ;
while(!line.equals("bye")) {
System.out.println(line) ;
line = br.readLine() ;
}
server.close() ;
socket.close() ;
}catch(Exception e) {
e.printStackTrace() ;
}
}
}

现在来解析一下这个服务器端的代码,先用ServerSocket创建一个服务器端的对象,也就是创建一个服务器,监听的端口为5000,客户端只能指定端口为5000进行连接。跟着是创建一个Socket对象, 同时需要说明一下ServerSocket的accept()这个函数,accept返回的是客户端连接到服务器的Socket,简单来说,返回的就是客户端的Socket,一个ServerSocket只能被一个Socket连接,也就是说accept返回的是唯一的Socket。创建一个String对象,用来保存在客户端读取出来的数据,这里的为一次输出为一行。创建一个BufferedReader对象,用来读取Socket传来的值。Socket的getInputStream返回的是InputStream对象。然后是while无限循环读取客户端输入的数据,直到读取bye,销毁服务器。

下面看看客户端的代码
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;

public class Client {
public static void main(String[] args) {
Socket socket ;
try {
socket = new Socket("127.0.0.1", 5000) ;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) ;
PrintStream ps = new PrintStream(socket.getOutputStream()) ;

String line ;
line = br.readLine() ;

while(!line.equals("bye")) {
ps.println(line) ;
ps.flush() ;
line = br.readLine() ;
}

socket.close() ;
br.close() ;
ps.close() ;
}catch(Exception e) {
e.printStackTrace() ;
}

}
}

客户端意思就是要连接到服务器端进行信息交互的终端,可以有多个。 但是这个例子只允许客户端对服务器端发送数据,服务器端无法发送数据到客户端,读者可以自己完善。因为服务器端和客户端都在本机上,创建客户端的Socket指定的ip为127.0.0.1,端口为5000,也就是服务器监听的端口,其他端口无效。创建一个BufferedReader对象,是从标准输入流读取数据,一次为一行。socket.getOutputStream()返回的是这个socket的输出流构造PrintStream对象,用于向服务器端输出数据,也就是发送数据。直到发送的数据为bye,销毁与服务器端的连接。

大概的思路也就是这样,同时尝试实现多客户端连接服务器,或者实现相互发送数据。

文章来自 你让梦想有了翅膀,转载请注明出处