您的位置:首页 > 其它

Socket套接字的使用小例子

2016-02-29 17:06 232 查看
Socket用来描述IP地址和端口,用来实现不同虚拟机或不同计算机之间的通信。下面是用java语言写的两个主函数,分别模拟服务器端和客户端。

ServerThread.java

public class ServerThread extends Thread {

Socket socket = null;

public ServerThread(Socket socket) {
this.socket = socket;
}

@Override
public void run() {
InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
OutputStream os = null;
PrintWriter pw = null;
try {
// 获取客户端的请求信息
is = socket.getInputStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
String info = null;
while((info=br.readLine())!=null) {
System.out.println("我是服务端, 客户端说: " + info);
}
socket.shutdownInput();

// 向客户端发送信息:
os = socket.getOutputStream();
pw = new PrintWriter(os);
pw.write("欢迎您.......");
pw.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(pw!=null)
pw.close();
if(os!=null)
os.close();
if(br!=null)
br.close();
if(isr!=null)
isr.close();
if(is!=null)
is.close();
if(socket!=null)
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}


Server.java

public class Server {

public static void main(String[] args) {
try {
// 创建服务器端的Socket, ServerSocket, 指定绑定的端口,
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务端,正在等待客户端的响应......");
Socket socket = null;
int count = 0;
while(true) {
// 调用accept()方法监听,等待客户端连接
socket = serverSocket.accept();
ServerThread serverThread = new ServerThread(socket);
serverThread.start();
System.out.println(count++);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}


Client.java

public class Client {

public static void main(String[] args) {
try {
// 客户端socket 包含服务器的URL和端口号
Socket socket = new Socket("localhost", 8888);
// 向服务器发送请求
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.write("用户名:admin----密码:134323");
pw.flush();
socket.shutdownOutput();

// 获得服务端的响应内容
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String info = null;
while((info = br.readLine()) != null) {
System.out.println("客户端,服务端说: " + info);
}

// 关闭流
pw.flush();
os.close();
pw.close();
is.close();
isr.close();
br.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: