Server Socket通信简单的实例分析
Server Socket <>通信一直在不断的进行相关的测试 在不断的使用中有很多的问题存在 其实有不少的问题在源代码中就能找打答案 所谓Server Socket通信通常也称作 套接字 用于描述IP地址和端口 是一个通信链的句柄 应用程序通常通过 套接字 向网络发出请求或者应答网络请求
Socket和ServerSocket类库位于包中 Server Socket用于服务器端 Server Socket通信是建立网络连接时使用的 在 连接成功时 应用程序两端都会产生一个Socket实例 操作这个实例 完成所需的会话 对于一个网络连接来说 套接字是平等的 并没有差别 不因为在服 务器端或在客户端而产生不同级别 不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的
下面给出一个最简单的Server Socket通信的例子供初学者参考
服务器端 ServerDemo java
Java代码
package lanber socket;
import java io DataInputStream;
import java io DataOutputStream;
import java io IOException;
import ServerSocket;
import Socket;
public class ServerDemo {
/**
* 注意 Socket的发送与接收是需要同步进行的 即客户端发送一条信息 服务器必需先接收这条信息
* 而后才可以向客户端发送信息 否则将会有运行时出错
* @param args
*/
public static void main(String[] args) {
ServerSocket ss = null;
try {
ss = new ServerSocket( );
//服务器接收到客户端的数据后 创建与此客户端对话的Socket
Socket socket = ss accept();
//用于向客户端发送数据的输出流
DataOutputStream dos = new DataOutputStream(socket getOutputStream());
//用于接收客户端发来的数据的输入流
DataInputStream dis = new DataInputStream(socket getInputStream());
System out println( 服务器接收到客户端的连接请求 + dis readUTF());
//服务器向客户端发送连接成功确认信息
dos writeUTF( 接受连接请求 连接成功! );
//不需要继续使用此连接时 关闭连接
socket close();
ss close();
} catch (IOException e) {
e printStackTrace();
}
}
}
Server Socket通信客户端 ClientDemo java
Java代码
package lanber socket;
import java io DataInputStream;
import java io DataOutputStream;
import java io IOException;
import java io OutputStream;
import Socket;
import UnknownHostException;
public class ClientDemo {
/**
* @param args
*/
public static void main(String[] args) {
Socket socket = null;
try {
socket = new Socket( localhost );
//获取输出流 用于客户端向服务器端发送数据
DataOutputStream dos = new DataOutputStream(socket getOutputStream());
//获取输入流 用于接收服务器端发送来的数据
DataInputStream dis = new DataInputStream(socket getInputStream());
//客户端向服务器端发送数据
dos writeUTF( 我是客户端 请求连接! );
//打印出从服务器端接收到的数据
System out println(dis readUTF());
//不需要继续使用此连接时 记得关闭哦
socket close();
} catch (UnknownHostException e) {
e printStackTrace();
} catch (IOException e) {
e printStackTrace();
}
}
}
lishixinzhi/Article/program/Java/hx/201311/25808