-
多线程实现 - 服务器与多客户端之间通信 客户端代码不变 /* *服务器线程处理类 */ publicclassServerThreadextendsThread{ //和本线程相关的Socket Socketsocket=null; publicServerThread(Socketsocket){ this.socket=socket; } //线程执行的操作,响应客户端的请求 publicvoidrun(){ InputStreamis=null; InputStreamReaderisr=null; BufferedReaderbr=null; OutputStreamos=null; PrintWriterpw=null; try{ //获取输入流,并读取客户端信息 is=socket.getInputStream(); isr=newInputStreamReader(is); br=newBufferedReader(isr); Stringinfo=null; while((info=br.readLine())!=null){//循环读取客户端的信息 System.out.println("我是服务器,客户端说:"+info); } socket.shutdownInput();//关闭输入流 //获取输出流,响应客户端的请求 os=socket.getOutputStream(); pw=newPrintWriter(os); pw.write("欢迎您!"); pw.flush();//调用flush()方法将缓冲输出 }catch(IOExceptione){ //TODOAuto-generatedcatchblock 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(IOExceptione){ e.printStackTrace(); } } } }查看全部
-
/** *客户端 */ publicclassClient{ publicstaticvoidmain(String[]args){ try{ //1.创建客户端Socket,指定服务器地址和端口 Socketsocket=newSocket("localhost",8888); //2.获取输出流,向服务器端发送信息 OutputStreamos=socket.getOutputStream();//字节输出流 PrintWriterpw=newPrintWriter(os);//将输出流包装为打印流 pw.write("用户名:admin;密码:123"); pw.flush(); socket.shutdownOutput();//关闭输出流 //3.获取输入流,读取服务器端的响应信息 InputStreamis=socket.getInputStream(); BufferedReaderbr=newBufferedReader(newInputStreamReader(is)); Stringinfo=null; while((info=br.readLine())!=null){ System.out.println("这里是客户端,服务器说:"+info); } //4.关闭资源 br.close(); is.close(); pw.close(); os.close(); socket.close(); }catch(UnknownHostExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } } }查看全部
-
/** *基于TCP协议的Socket通信,实现用户登录 *服务器端 */ publicclassServer{ publicstaticvoidmain(String[]args){ try{ //1.创建一个服务器端Socekt,即ServerSocket,指定绑定的端口,并监听此端口 ServerSocketserverSocket=newServerSocket(8888); //2.调用accept()方法开始监听,等待客户端的连接 System.out.println("***服务器即将启动,等待客户端的连接***"); Socketsocket=serverSocket.accept(); //3.获取输入流,读取客户端信息 InputStreamis=socket.getInputStream();//字节输入流 InputStreamReaderisr=newInputStreamReader(is);//将字节流转换为字符流 BufferedReaderbr=newBufferedReader(isr);//为输入流添加缓冲 Stringinfo=null; while((info=br.readLine())!=null){//循环读取客户端的信息 System.out.println("这里是服务器,客户端说:"+info);} socket.shutdownInput();//关闭输入流 //4.获取输出流,响应客户端的请求 OutputStreamos=socket.getOutputStream(); PrintWriterpw=newPrintWriter(os); pw.write("欢迎您登录"); pw.flush();//调用flush()方法将缓冲输出 //5.关闭资源 pw.close(); os.close(); br.close(); isr.close(); is.close(); socket.close(); serverSocket.close(); }catch(IOExceptione){ e.printStackTrace(); } } }查看全部
-
基于TCP(传输控制协议)的Socket通信 1.服务器端,创建server,建立服务器端监听socket,对指定端口进行监听,并等待接收连接请求 2.客户端创建连接socket,向服务端发送请求,两者建立连接 3.服务器端同意客户端的请求并接受,创建连接socket与客户端通信 4.建立连接以后,分别通过输入/输出流开始通信,完成数据的接收和响应 5.最后关闭资源,结束通信查看全部
-
处理得了的异常就捕获,处理不了的就传递(抛出) 启动的时候,一定要先启动服务端,再启动客户端查看全部
-
用户登录 客户端步骤查看全部
-
用户登录 服务器端步骤 try { //1.创建一个服务器端Socekt,即ServerSocket,指定绑定的端口,并监听此端口 ServerSocket serverSocket = new ServerSocket(8888); //2.调用accept()方法开始监听,等待客户端的连接 System.out.println("***服务器即将启动,等待客户端的连接***"); Socket socket = serverSocket.accept(); //3.获取输入流,读取客户端信息 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); } socket.shutdownInput();//关闭输入流 //4.关闭资源 br.close(); isr.close(); is.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); }查看全部
-
Socket通信实现步骤查看全部
-
Socket通信模型查看全部
-
Socket通信概述查看全部
-
public static void main(String[] args) { try { //创建一个URL实例 URL url = new URL("http://www.baidu.com"); //通过URL的openStream方法获取url对象所表示的资源的字节输入流 InputStream is = url.openStream(); InputStreamReader isr = new InputStreamReader(is,"UTF-8"); //为字符输入流添加缓冲 BufferedReader br = new BufferedReader(isr); String data = br.readLine();//读数据 while (data != null) {//循环读取数据 System.out.println(data);//输出数据 data = br.readLine(); } br.close(); isr.close(); is.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }查看全部
-
URL统一资源定位符 public static void main(String[] args) { try { //创建一个URL实例 URL imooc = new URL("http://www.imooc.com"); URL url = new URL(imooc, "/index.html?username=tom#test");//?后面表示参数,#后面表示锚点 System.out.println("协议:" + url.getProtocol()); System.out.println("主机" + url.getHost()); //如果未指定端口号,则使用默认的端口号80,此时getPort()方法返回值为-1 System.out.println("端口号" + url.getPort()); System.out.println("文件路径"+url.getPath()); System.out.println("文件名"+url.getFile()); System.out.println("相对路径"+url.getRef());//相对路径就是锚点 System.out.println("查询字符串"+url.getQuery());//查询字符串就是参数 } catch (MalformedURLException e) { e.printStackTrace(); } }查看全部
-
URL图示查看全部
-
public static void main(String[] args) throws UnknownHostException { //获取本机的InetAddress实例 InetAddress address = InetAddress.getLocalHost(); System.out.println("计算机名" + address.getHostName()); System.out.println("IP地址" + address.getHostAddress()); byte[] bytes = address.getAddress();//获取字节数组形式的IP地址 System.out.println("字节数组形式的Ip" + Arrays.toString(bytes)); System.out.println(address);//直接输出InetAddress对象 //根据机器名获取InetAddress实例 //InetAddress address2 = InetAddress.getByName("USER-20160501VP"); InetAddress address3 = InetAddress.getByName("192.168.249.1"); System.out.println("计算机名" + address3.getHostName()); System.out.println("IP地址" + address3.getHostAddress()); }查看全部
-
Java网络支持四大类 UDP 用户数据报协议 Datagram 数据报查看全部
举报
0/150
提交
取消