java中socket创建服务端与客户端即时对聊
2014-11-06 23:40
357 查看
package tool; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; /** * 服务器 * @author Mr.Zhang * 服务端与客户端建立连接的过程 *1.创建服务端对象,然后指定要监听的端口 *2.服务端监听向指定端口发出的请求 *3.客户端发送请求 *4.服务端接收到请求并建立连接 *5.服务端关闭连接 */ public class ServerDemo { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { serverSocket();//服务器开,注释client //client();//客户端开,注释serverSocket } /** * 服务器端 * @throws IOException */ public static void serverSocket() throws IOException{ System.out.println("服务器端就绪"); ServerSocket server=new ServerSocket(9999); //服务端监听请求 while(true){ Socket socket=server.accept(); System.out.println("服务器获得连接"); /** * 1.服务端发出欢迎信息 */ //通过socket获得流 OutputStream os=socket.getOutputStream(); PrintWriter pw=new PrintWriter(os); pw.println("服务器端发送:欢迎您!"); pw.flush(); /** * 使用BufferedReader接收客户端信息 */ InputStream is=socket.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); String msg=new String(); /** * 什么是阻塞? * 阻塞就是由于流中的数据没有满足获取的条件,输入流就会一直等待接收满足条件的数据,由此造成了程序等待,就是阻塞 * 解决方法:1. IO:让读取的数据满足读取条件 2.NIO */ while((msg=br.readLine())!=null){ if(msg.equalsIgnoreCase("quit")){//断开服务器端连接 socket.close(); break; } if(msg.equalsIgnoreCase("quitall")){//断开服务器端与客户端连接 socket.close(); server.close(); break; } System.out.println("客户端发出的数据是"+msg); /** * 服务端发出确认信息 */ Scanner scan=new Scanner(System.in); String sendMsg=scan.next(); pw.println(sendMsg); pw.flush(); } } } /** * 客户端 * @throws IOException * @throws UnknownHostException */ public static void client() throws UnknownHostException, IOException{ //使用Socket向指定的机器和端口发出请求 Socket socket=new Socket("192.168.1.101",9999); /** * 2.客户端接收服务端发出的欢迎您信息,并发送数据 */ //通过socket获得输入流 InputStream is=socket.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); //持续接收服务器端信息 String content=new String(); while((content=br.readLine())!=null){ System.out.println("服务端发送的数据"+content); Scanner scan=new Scanner(System.in); String sendMsg=scan.next(); PrintWriter pw=new PrintWriter(socket.getOutputStream()); pw.println(sendMsg); pw.flush(); } } }
相关文章推荐
- 多线程多端口Socket服务端客户端代码 java
- socket ( java ) 简单多个客户端、服务端通信(多线程)
- android的NDK和java进行本地socket通信-----C服务端,java客户端
- Cocos2dx3.x使用socket创建服务端和客户端改进
- 黑马程序员 【】java学习之路——TCP客户端和服务端的创建
- Java Socket多线程服务端、客户端
- java服务端客户端交互系列(一)socket连接
- android客户端和java服务端之间用socket来传输图片
- android native c java进行本地socket通信----java服务端 C客户端
- socket ( java ) 简单客户端、服务端通信
- java写的Socket客户端和服务端通信,经验证可以执行的代码,并添加了很多注释
- VC客户端与Java服务端Socket通讯简例
- android客户端和java服务端之间用socket来传输图片
- wince win32 c++ socket 服务端 客户端 创建与通信
- socket ( java ) 简单多个客户端、服务端通信(多线程)
- Socket通讯(objetive-c)客户端与(JAVA)服务端的特殊点
- Java--Socket客户端,服务端通信
- java socket 实现服务端与客户端------一对多的服务端和客户机
- java socket编程,客户端发出检索字段,服务端查询数据并返回结果集
- java Socket客户端服务端通信小实例