cs模式下socket简单讲解
Socket编程在cs模式中很重要的一种tcp/ip的通信技术。作为移动客户端开发,尤为重要。一下简单讲解一下Socket通信的机制。
cs模式下socket的原理为首先在服务器断开始一个ServerSocket对象,ServerSocket对象开始监听制定的端口,知道有ClientSocket请求连接该端口,获取Client对象,然后进行一些处理。
而客户端就是负责连接服务器端的ServerSocket,然后进行一些特定的处理。
首先创建一个ServerSocket工程,代码如下。
然后新建另一个工程,作为客户端Socket的项目。
注意,启动的时候不要全部使用Eclipse,建议使用命令行编译执行服务器端的java程序,使用Eclipse编译执行客户端的程序。顺序为先启动服务器端,然后启动客户端程序。
Last Modified:2011-12-23
Socket编程在cs模式中很重要的一种tcp/ip的通信技术。作为移动客户端开发,尤为重要。一下简单讲解一下Socket通信的机制。
cs模式下socket的原理为首先在服务器断开始一个ServerSocket对象,ServerSocket对象开始监听制定的端口,知道有ClientSocket请求连接该端口,获取Client对象,然后进行一些处理。
而客户端就是负责连接服务器端的ServerSocket,然后进行一些特定的处理。
首先创建一个ServerSocket工程,代码如下。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerSocketDemo {
public static void main(String[] args){
try {
//instantiate a ServerSocket objects and listen to the port 8088
ServerSocket serverSocket=new ServerSocket(8088);
//GEt the client object when a client requests
Socket clientSocket=serverSocket.accept();
//get the inputStream from ClientSocket
InputStream inputStream=clientSocket.getInputStream();
//use Decoration pattern to get a better format object
Reader inputStreamReader=new InputStreamReader(inputStream);
BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
System.out.println(bufferedReader.readLine());
bufferedReader.close();
serverSocket.close();
} catch (IOException e) {
System.out.println("IOException occurs");
e.printStackTrace();
}
}
}
然后新建另一个工程,作为客户端Socket的项目。
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientSocketDemo {
public static void main(String[] args){
Socket clientSocket;
try {
clientSocket=new Socket("127.0.0.1",8088);
//when connected to the server socket show the tips
System.out.println("successfully connected");
//input the words into io stream and send them to servers
PrintStream printStream=new PrintStream(clientSocket.getOutputStream());
printStream.println("hello world");
clientSocket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意,启动的时候不要全部使用Eclipse,建议使用命令行编译执行服务器端的java程序,使用Eclipse编译执行客户端的程序。顺序为先启动服务器端,然后启动客户端程序。
Last Modified:2011-12-23