3 网络编程 - Socket.ppt

上传人:qwe****56 文档编号:70012843 上传时间:2023-01-14 格式:PPT 页数:14 大小:80KB
返回 下载 相关 举报
3 网络编程 - Socket.ppt_第1页
第1页 / 共14页
3 网络编程 - Socket.ppt_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《3 网络编程 - Socket.ppt》由会员分享,可在线阅读,更多相关《3 网络编程 - Socket.ppt(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、网络编程-SocketC/S结构网络通讯流程服务器开始监听客户端申请连接服务器接受连接(此时连接已经建立)服务器与客户端开始通讯通讯条件服务器IP或主机名或域名通过IP来定位要连接的服务器所在位置127.0.0.1表示本机IPLocalhost表示本机服务器监听的服务端口通过IP找到要连接的服务器主机,但是服务器上运行着多个程序都监听着网络而每个程序都监听着不同的端口任何程序都必须通过端口来与网络通讯这时,必须通过端口来定位服务器上要连接的程序通讯条件服务器 单用户public static void main(String args)ServerSocket serverSocket=nul

2、l;InputStream is=null;InputStreamReader isr=null;BufferedReader br=null;Socket socket=null;try serverSocket=new ServerSocket(6789);/开始监听socket=serverSocket.accept();/等待接收数据is=socket.getInputStream();/获得通向Socket的低端流isr=new InputStreamReader(is);/高端流绑定低端流br=new BufferedReader(isr);/缓冲流绑定高端流while(true)

3、/循环读取String line=br.readLine();/接收数据if(null=line)/如果客户端已经断开break;System.out.println(line);catch(Exception e)e.printStackTrace();finally try is.close();catch(Exception e)e.printStackTrace();try isr.close();catch(Exception e)e.printStackTrace();try br.close();catch(Exception e)e.printStackTrace();try

4、socket.close();catch(Exception e)e.printStackTrace();try serverSocket.close();catch(Exception e)e.printStackTrace();客户端public static void main(String args)Socket socket=null;OutputStream os=null;PrintStream ps=null;try socket=new Socket(“127.0.0.1”,6789);/申请连接os=socket.getOutputStream();/获得通向Socket的

5、低端流ps=new PrintStream(os);/高端流绑定低端流ps.println(“把犯人给我押上!”);/发送数据ps.flush();catch(Exception e)e.printStackTrace();finally try ps.close();catch(Exception e)e.printStackTrace();try os.close();catch(Exception e)e.printStackTrace();try socket.close();catch(Exception e)e.printStackTrace();服务器 多用户serverSock

6、et=new ServerSocket(6789);/开始监听while(true)/循环接收用户请求socket=serverSocket.accept();/等待接收数据is=socket.getInputStream();isr=new InputStreamReader(is);br=new BufferedReader(isr);while(true)String line=br.readLine();if(null=line)break;System.out.println(line);socket.close();服务器 多用户 并发原理:每次acept到一个Socket,都启动

7、一个线程,把这个Socket交给这个线程进行处理每个Socket象征着一个客户端,因为我们认为,我们将每个客户交给一个线程来处理这种线程称为“客户线程”服务器 多用户 并发public class ClientThread extends Thread private Socket socket=null;public ClientThread(Socket socket)this.socket=socket;public void run()InputStream is=null;InputStreamReader isr=null;BufferedReader br=null;try is

8、=socket.getInputStream();isr=new InputStreamReader(is);br=new BufferedReader(isr);while(true)String line=br.readLine();if(null=line)break;System.out.println(line);catch(Exception e)e.printStackTrace();finally try is.close();catch(Exception e)e.printStackTrace();try isr.close();catch(Exception e)e.pr

9、intStackTrace();try br.close();catch(Exception e)e.printStackTrace();try socket.close();catch(Exception e)e.printStackTrace();服务器 多用户 并发public static void main(String args)ServerSocket serverSocket=null;InputStream is=null;InputStreamReader isr=null;BufferedReader br=null;Socket socket=null;try serv

10、erSocket=new ServerSocket(6789);/开始监听while(true)socket=serverSocket.accept();/等待接收数据ClientThread clientThread=new ClientThread(socket);clientThread.start();/启动一个客户线程 catch(Exception e)e.printStackTrace();finally try is.close();catch(Exception e)e.printStackTrace();try isr.close();catch(Exception e)e

11、.printStackTrace();try br.close();catch(Exception e)e.printStackTrace();try socket.close();catch(Exception e)e.printStackTrace();try serverSocket.close();catch(Exception e)e.printStackTrace();客户端 多用户 并发下面是模拟10个并发客户端的程序:public static void main(String args)for(int i=0;i 10;i+)Socket socket=null;Output

12、Stream os=null;PrintStream ps=null;try socket=new Socket(127.0.0.1,6789);os=socket.getOutputStream();ps=new PrintStream(os);ps.println(把犯人给我押上!);ps.flush();catch(Exception e)e.printStackTrace();finally try ps.close();catch(Exception e)e.printStackTrace();try os.close();catch(Exception e)e.printStackTrace();try socket.close();catch(Exception e)e.printStackTrace();总结服务器:用循环实现多客户用多线程实现并发思索已经可以,多用户,并发了现在如果要求对同一个客户,都要求:多任务并发怎么办?提示:与多用户并发一样用循环实现多任务用多线程实现并发

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁