网络编程3--毕向东java基础教程视频学习笔记,

时间:2019-11-04 12:19来源:计算机教程
网络编程3--毕向东java基础教程视频学习笔记,3--毕向东 Day24 01 TCP上传图片 02 客户端并发上传图片 03 客户端并发登录 04 浏览器客户端-自定义服务端 05 浏览器客户端-Tomcat服务端   01

网络编程3--毕向东java基础教程视频学习笔记,3--毕向东

Day24

01 TCP上传图片
02 客户端并发上传图片
03 客户端并发登录
04 浏览器客户端-自定义服务端
05 浏览器客户端-Tomcat服务端

 

01 TCP上传图片

vnsc5858威尼斯城官网 1 1 import java.net.*; 2 import java.io.*; 3 class PicClient 4 { 5 public static void main(String[] args) throws Exception 6 { 7 Socket s=new Socket("127.0.0.1",10007); 8 FileInputStream fis=new FileInputStream("E:\图\素材\头像.jpg"); 9 OutputStream os=s.getOutputStream(); 10 byte[] buf=new byte[1024*16]; 11 int len; 12 while((len=fis.read(buf))!=-1) 13 { 14 os.write(buf,0,len); 15 } 16 //告诉服务器数据写入完毕 17 s.shutdownOutput(); 18 InputStream is=s.getInputStream(); 19 byte[] bufIn=new byte[1024]; 20 int num=is.read(bufIn); 21 System.out.println(new String(bufIn,0,num)); 22 23 fis.close(); 24 s.close(); 25 26 } 27 } 28 class PicServer 29 { 30 public static void main(String[] args) throws Exception 31 { 32 ServerSocket ss=new ServerSocket(10007); 33 Socket s=ss.accept(); 34 System.out.println(s.getInetAddress().getHostAddress() "......connected"); 35 InputStream in=s.getInputStream(); 36 byte[] buf=new byte[1024*16]; 37 FileOutputStream fos=new FileOutputStream("touxiang.jpg"); 38 int len; 39 while((len=in.read())!=-1) 40 { 41 fos.write(buf,0,len); 42 } 43 PrintWriter out=new PrintWriter(s.getOutputStream(),true); 44 out.println("图片上传成功!"); 45 46 fos.close(); 47 s.close(); 48 ss.close(); 49 50 } 51 } View Code

 

02 客户端并发上传图片

服务端如果只有当为一个客户端服务完成后,才能为别的客户端服务,效率就太低了,所以服务端需要采用多线程。

一个客户端请求连接,服务端就开启一个线程为他服务。这样可以实现客户端并发上传图片。

实现代码如下:

vnsc5858威尼斯城官网 2 1 /* 2 3 */ 4 import java.net.*; 5 import java.io.*; 6 class PicClient 7 { 8 public static void main(String[] args) throws Exception 9 { 10 //判断要上传的文件是否符合要求,不符合则结束运行 11 File file=new File(args[0]); 12 if(args.length!=1) 13 { 14 System.out.println("请上传一个文件,而不是多个!"); 15 return; 16 } 17 if(!(file.exists() && file.isFile())) 18 { 19 System.out.println("文件不存在,或者文件有问题。"); 20 return; 21 } 22 if(!(file.getName().endsWith(".png"))) 23 { 24 System.out.println("请上传一个png格式的文件。"); 25 return; 26 } 27 if(file.length()>1024*9) 28 { 29 System.out.println("上传文件大小超过允许范围!"); 30 return; 31 } 32 33 //建立Socket服务 34 Socket s=new Socket("172.29.115.1",10008); 35 //读取一个图片文件 36 FileInputStream fis=new FileInputStream(file); 37 byte[] buf=new byte[1024*9]; 38 OutputStream out=s.getOutputStream(); 39 int len=0; 40 //写入socket输出流中 41 while((len=fis.read(buf))!=-1) 42 { 43 out.write(buf,0,len); 44 45 } 46 //给服务端一个信号,客户端输出结束 47 s.shutdownOutput(); 48 49 //接受服务端的回馈信息 50 InputStream in=s.getInputStream(); 51 byte[] b=new byte[1024]; 52 int num=in.read(b); 53 System.out.println("server:" new String(b,0,num)); 54 55 //关闭资源 56 fis.close(); 57 s.close(); 58 59 60 } 61 } 62 class PicServerThread implements Runnable 63 { 64 private Socket s; 65 public PicServerThread(Socket s) 66 { 67 this.s=s; 68 } 69 public void run() 70 { 71 try 72 { 73 int count=1; 74 String ip=new String(s.getInetAddress().getHostAddress() ""); 75 System.out.println(ip "......connected"); 76 File file=new File(ip "(" count ")"); 77 //如果文件名已经存在,通过增加序号,定义新名字 78 //循环进行判断,直到找到没用过的文件名 79 while(file.exists()) 80 file=new File(ip "(" (count ) ")" ".png"); 81 82 InputStream in=s.getInputStream(); 83 FileOutputStream fos=new FileOutputStream(file); 84 85 byte[] buf=new byte[1024*9]; 86 int len; 87 //读取数据并写入到文件中 88 while((len=in.read(buf))!=-1) 89 { 90 fos.write(buf,0,len); 91 } 92 93 //向客户端发送提示信息 94 PrintWriter pw=new PrintWriter(s.getOutputStream(),true); 95 pw.println("上传成功!"); 96 97 //关闭资源 98 fos.close(); 99 s.close(); 100 101 102 103 } 104 catch (Exception e) 105 { 106 throw new RuntimeException("服务建立失败!"); 107 } 108 109 } 110 111 112 } 113 class PicServer 114 { 115 public static void main(String[] args) throws Exception 116 { 117 118 //建立服务 119 ServerSocket ss=new ServerSocket(10008); 120 while(true) 121 { 122 //接收客户端端口 123 Socket s=ss.accept(); 124 new Thread(new PicServerThread(s)).start(); 125 126 } 127 128 } 129 } View Code

 

03 客户端并发登录

客户端通过键盘录入用户名,服务端对这个用户名进行校验。
如果该用户存在,在服务端显示XXX,已登录。
并在客户端显示,XXX欢迎登陆。

如果该用户不存在,在服务端显示XXX,尝试登陆。
并在客户端显示,XXX,该用户不存在。

最多只能尝试登陆三次。

vnsc5858威尼斯城官网 3 1 import java.net.*; 2 import java.io.*; 3 class LoginClient 4 { 5 public static void main(String[] args)throws Exception 6 { 7 //建立服务 8 Socket s=new Socket("127.0.0.1",10008); 9 //获得键盘录入 10 BufferedReader bufr= 11 new BufferedReader(new InputStreamReader(System.in)); 12 //获得socket对应的输出流,设置为自动刷新 13 PrintWriter out=new PrintWriter(s.getOutputStream(),true); 14 15 //获得socket对应的输入流 16 BufferedReader in= 17 new BufferedReader(new InputStreamReader(s.getInputStream())); 18 //最多只能尝试登陆三次 19 for(int x=0;x<3;x ) 20 { 21 String name=bufr.readLine(); 22 //如果键盘录入为空(按下CTRL C),循环结束 23 if(name==null) 24 break; 25 out.println(name); 26 String info=in.readLine(); 27 System.out.println("server:" info); 28 //如果验证成功,循环结束 29 if(info.contains("欢迎")) 30 break; 31 } 32 //关闭资源 33 bufr.close(); 34 s.close(); 35 36 } 37 } 38 class UserThread implements Runnable 39 { 40 private Socket s; 41 public UserThread(Socket s) 42 { 43 this.s=s; 44 } 45 public void run() 46 { 47 try 48 { 49 //获取客户端ip 50 String ip=s.getInetAddress().getHostAddress(); 51 System.out.println(ip "......connected."); 52 //服务器最多提供三次验证服务 53 for(int i=0;i<3;i ) 54 { 55 BufferedReader in= 56 new BufferedReader(new InputStreamReader(s.getInputStream())); 57 //为读取服务器端的用户文件,建立输入流 58 BufferedReader bufr=new BufferedReader(new FileReader("user.txt")); 59 PrintWriter out=new PrintWriter(s.getOutputStream(),true); 60 //设置标志位,以便确定服务器需做出什么样的的动作 61 boolean flag=false; 62 String line=null; 63 String name=in.readLine(); 64 if(name==null) 65 break; 66 while((line=bufr.readLine())!=null) 67 { 68 if(name.equals(line)) 69 { 70 //如果在服务器的用户文件中找到客户输入的登录名 71 //改变标志位,结束循环 72 flag=true; 73 break; 74 } 75 } 76 //根据标志位不同,服务器做出不同动作 77 if(flag) 78 { 79 System.out.println(name "已经登录"); 80 out.println(name "欢迎登陆!"); 81 break; 82 } 83 else 84 { 85 System.out.println(name "尝试登录"); 86 out.println(name ",抱歉,用户名不存在!"); 87 } 88 89 90 } 91 //关闭资源 92 s.close(); 93 } 94 catch (Exception e) 95 { 96 e.printStackTrace(); 97 } 98 } 99 100 101 } 102 class LoginServer 103 { 104 public static void main(String[] args)throws Exception 105 { 106 //建立服务器端 107 ServerSocket ss=new ServerSocket(10008); 108 while(true) 109 { 110 //循环接收客户请求 111 Socket s=ss.accept(); 112 //为客户开启一个线程 113 new Thread(new UserThread(s)).start(); 114 } 115 116 } 117 } View Code

 

04 浏览器客户端-自定义服务端

 

演示客户端和服务端
客户端:浏览器
服务器:自定义

 

vnsc5858威尼斯城官网 4 1 import java.net.*; 2 import java.io.*; 3 class ServerDemo 4 { 5 public static void main(String[] args) throws Exception 6 { 7 ServerSocket ss=new ServerSocket(11000); 8 Socket s=ss.accept(); 9 System.out.println(s.getInetAddress().getHostAddress()); 10 PrintWriter out=new PrintWriter(s.getOutputStream(),true); 11 out.println("<font color='blue' size=8>客户端你好!</font>"); 12 s.close(); 13 ss.close(); 14 } 15 } View Code

不过用telnet当做客户端实验时,我计算机可能没用这个应用,就没有成功。

运行显示:
D:abc>telnet 127.0.0.1 11000
'telnet' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

 

05 浏览器客户端-Tomcat服务端

客户端:浏览器

服务端:Tomcat

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,

在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,

可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。

实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,

所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

 

简要介绍我安装Tomcat的过程。

1.下载。

官方下载网址为:http://tomcat.apache.org/
选择DownLoad--Tomcat6.0-32-bit/64-bit Windows Service Installer(pgp,md5)

这个版本直接点击就可以安装。如果不需要改变安装路径,直接选择下一步就可以了。

2.环境设置。

变量名:JAVA-HOME

变量值:SDK路径。

3.启动

启动Tomcat我们可以直接运行bin目录下的 Tomcat6.exe 可执行文件。

在启动完成以后在浏览器中输入:http://127.0.0.1:8080 .显示如下

vnsc5858威尼斯城官网 5

 

在D:tomcatwebapps路径下新建文件夹myWeb,再在此文件夹中新建文件Demo.html.

文件内容:

vnsc5858威尼斯城官网 6 1 <html> 2 <body> 3 <h1>这是我的主页</h1> 4 <font size=8 color=blue>欢迎登陆</font> 5 <div> 6 锦瑟无端五十弦,</br> 7 一弦一柱思华年。</br> 8 庄生晓梦迷蝴蝶,</br> 9 望帝春心托杜鹃。</br> 10 沧海月明珠有泪。</br> 11 蓝田日暖玉生烟,</br> 12 此情可待成追忆。</br> 13 只是当时已惘然。</br> 14 15 16 </div> 17 </body> 18 </html> View Code

 

在浏览器中输入http://127.0.0.1:8080/myWeb/Demo.html,显示如下:

vnsc5858威尼斯城官网 7

 

http://www.bkjia.com/Javabc/1093482.htmlwww.bkjia.comtruehttp://www.bkjia.com/Javabc/1093482.htmlTechArticle网络编程3--毕向东java基础教程视频学习笔记,3--毕向东 Day24 01 TCP上传图片 02 客户端并发上传图片 03 客户端并发登录 04 浏览器客户端-自定...

网络编程2--毕向东java基础教程视频学习笔记,2--毕向东

Day 23

08 Udp接收端
09 Udp键盘录入数据方式
10 Udp聊天
11 TCP传输
12 TCP传输2
13 TCP练习
14 TCP复制文件

 

08 Udp接收端

需求:
定义一个应用程序,用于接收udp协议传输的数据并处理。

思路:
1.定义UdpSocket服务。
2.定义一个数据报包,因为要存储接收到的字节数据,
而数据报包对象中有更多的功能可以提取字节数据中不同的数据信息。
3.通过socket服务的receive方法将接收到的数据存入已经定义好的数据报包中。
4.通过数据报包对象的特有功能。将这些不同的数据取出,打印在控制台上。
5.关闭资源。

vnsc5858威尼斯城官网 8 1 import java.net.*; 2 public class UdpReceive 3 { 4 public static void main(String[] args) 5 { 6 try 7 { 8 //1.创建Udp Socket,建立端点 9 DatagramSocket ds=new DatagramSocket(10000); 10 11 //2.定义数据报包,用来存储数据 12 byte[] buf=new byte[1024]; 13 DatagramPacket dp=new DatagramPacket(buf,buf.length); 14 15 //3.通过Socket服务的receive方法接收到的数据存入数据包 16 ds.receive(dp); 17 18 //通过数据报包中的方法获取其中的数据 19 String ip=dp.getAddress().getHostAddress(); 20 String data=new String(dp.getData(),0,dp.getLength()); 21 int port=dp.getPort(); 22 23 System.out.println(ip "::" data "::" port); 24 //关闭资源 25 ds.close(); 26 27 } 28 catch (Exception e) 29 { 30 e.printStackTrace(); 31 } 32 33 } 34 } View Code

 

09 Udp键盘录入数据方式

read和receive都是阻塞式方法,如果接收不到数据,就会等待。

java.net包和java.io包通常一起使用。

测试程序如下:

vnsc5858威尼斯城官网 9 1 public class UdpSend2 2 { 3 public static void main(String[] args) throws IOException 4 { 5 DatagramSocket ds=new DatagramSocket(10001); 6 BufferedReader bufr= 7 new BufferedReader(new InputStreamReader(System.in)); 8 String line=null; 9 while((line=bufr.readLine())!=null) 10 { 11 byte[] buf=line.getBytes(); 12 13 DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),10000); 14 ds.send(dp); 15 } 16 ds.close(); 17 } 18 } View Code vnsc5858威尼斯城官网 10 1 import java.net.*; 2 import java.io.*; 3 public class UdpReceived2 4 { 5 public static void main(String[] args) throws Exception 6 { 7 DatagramSocket ds=new DatagramSocket(10000); 8 while(true) 9 { 10 byte[] buf=new byte[1024]; 11 DatagramPacket dp=new DatagramPacket(buf,buf.length); 12 ds.receive(dp); 13 String ip=dp.getAddress().getHostAddress(); 14 String data=new String(buf,0,dp.getLength()); 15 System.out.println(ip "::" data); 16 } 17 18 } 19 } View Code

 

10 Udp聊天

实现简单的聊天功能,以ip地址辨别不同身份。

vnsc5858威尼斯城官网 11 1 /* 2 聊天 3 */ 4 import java.net.*; 5 import java.io.*; 6 class Send implements Runnable 7 { 8 private DatagramSocket s; 9 public Send(DatagramSocket s) 10 { 11 this.s=s; 12 } 13 public void run() 14 { 15 try 16 { 17 BufferedReader br= 18 new BufferedReader(new InputStreamReader(System.in)); 19 String line=null; 20 while((line=br.readLine())!=null) 21 { 22 if("over".equals(line)) 23 break; 24 byte[] buf=line.getBytes(); 25 DatagramPacket dp= 26 new DatagramPacket(buf,buf.length,InetAddress.getByName("172.29.115.1"),10005); 27 s.send(dp); 28 29 } 30 } 31 catch (Exception e) 32 { 33 throw new RuntimeException("发送端失败!"); 34 35 } 36 } 37 } 38 class Receive implements Runnable 39 { 40 private DatagramSocket s; 41 public Receive(DatagramSocket s) 42 { 43 this.s=s; 44 } 45 public void run() 46 { 47 try 48 { 49 while(true) 50 { 51 byte[] buf=new byte[1024]; 52 DatagramPacket dp=new DatagramPacket(buf,buf.length); 53 s.receive(dp); 54 String ip=dp.getAddress().getHostAddress(); 55 String data=new String(dp.getData(),0,dp.getLength()); 56 System.out.println(ip "::" data); 57 58 } 59 } 60 catch (Exception e) 61 { 62 throw new RuntimeException("接受端失败!"); 63 64 } 65 } 66 } 67 public class ChatDemo 68 { 69 public static void main(String[] args)throws Exception 70 { 71 DatagramSocket send=new DatagramSocket(); 72 DatagramSocket rece=new DatagramSocket(10005); 73 74 new Thread(new Send(send)).start(); 75 new Thread(new Receive(rece)).start(); 76 } 77 78 } View Code

 

11 TCP传输

TCP传输
Socket和ServerSocket
建立客户端和服务器端
建立连接后,通过Socket中的IO流进行数据传输
关闭Socket
同样,服务器端和客户端是两个独立的应用程序。

vnsc5858威尼斯城官网 12 1 /* 2 需求:给服务器端发送一个文本数据 3 步骤: 4 1.创建Socket服务,并指定要连接的主机和端口 5 */ 6 import java.net.*; 7 import java.io.*; 8 class TcpClient 9 { 10 public static void main(String[] args) 11 { 12 try 13 { 14 //创建客户端的Socket服务,指定目的主机和端口 15 Socket s=new Socket("127.0.0.1",10000); 16 17 //为了发送数据,应该获取Socket中的输出流。 18 OutputStream out=s.getOutputStream(); 19 20 out.write("hahaha".getBytes()); 21 s.close(); 22 23 } 24 catch (Exception e) 25 { 26 throw new RuntimeException("客户端建立失败!"); 27 } 28 29 30 } 31 } 32 /* 33 需求:定义端点接收数据并打印在控制台。 34 服务端: 35 1.建立服务端的socket服务,ServerSocket(); 36 并监听一个端口 37 2.获取连接过来的客户端对象。 38 通过ServerSocket的accept方法。 39 没有连接,就一直等待,所以这是一个阻塞式方法。 40 3.客户端如果发送来数据,那么服务端要使用对应的客户端对象,并获取到该客户端 41 对象的读取流来读取发过来的数据。 42 4.关闭服务端。 43 */ 44 class TcpServer 45 { 46 public static void main(String[] args) 47 { 48 try 49 { 50 ServerSocket ss=new ServerSocket(10000); 51 Socket s=ss.accept(); 52 String ip=s.getInetAddress().getHostAddress(); 53 54 InputStream in=s.getInputStream(); 55 byte[] buf=new byte[1024]; 56 int len=in.read(buf); 57 System.out.print(ip ":"); 58 System.out.println(new String(buf,0,len)); 59 60 s.close(); 61 62 } 63 catch (Exception e) 64 { 65 throw new RuntimeException("服务端建立失败!"); 66 } 67 68 69 } 70 } View Code

 

12 TCP传输2

演示tcp的传输的客户端和服务端的互访
需求:客户端给服务端发送数据,服务端收到后,给客户端反馈信息。

客户端:
1.建立socket服务。指定要连接主机和端口。
2.获取socket流中的输出流。将数据写到该流中,通过网络发送给服务端。
3.获取socket流中的输入流,将服务器反馈的数据获取到,并打印。
4.关闭客户端。

vnsc5858威尼斯城官网 13 1 import java.net.*; 2 import java.io.*; 3 class TcpClient2 4 { 5 public static void main(String[] args) 6 { 7 try 8 { 9 Socket s=new Socket("172.29.115.1",10000); 10 OutputStream os=s.getOutputStream(); 11 os.write("你好啊,服务端!".getBytes()); 12 13 byte[] buf=new byte[1024]; 14 InputStream is=s.getInputStream(); 15 int len=is.read(buf); 16 System.out.println(new String(buf,0,len)); 17 s.close(); 18 } 19 catch (Exception e) 20 { 21 throw new RuntimeException("客户端建立失败!"); 22 } 23 24 } 25 } 26 class TcpServer2 27 { 28 public static void main(String[] args) 29 { 30 try 31 { 32 ServerSocket ss=new ServerSocket(10000); 33 Socket s=ss.accept(); 34 35 InputStream is=s.getInputStream(); 36 byte[] buf=new byte[1024]; 37 int len=is.read(buf); 38 System.out.println(s.getInetAddress().getHostAddress() "::" new String(buf,0,len)); 39 40 OutputStream os=s.getOutputStream(); 41 os.write("你也好,欢迎光临!".getBytes()); 42 43 s.close(); 44 ss.close(); 45 46 47 } 48 catch (Exception e) 49 { 50 throw new RuntimeException("服务端建立失败!"); 51 } 52 } 53 } View Code

 

13 TCP练习

需求:建立一个文本形式转换服务器。
客户端给服务端发送文本,服务端会将文本转换成大写再返回给服务端。
而且,客户端可以不断地进行文本发送,当客户端输入over时,转换结束。

分析:
客户端:
既然是操作设备上的数据,那么就可以使用io技术,并且按照io的操作规律来思考。
源:键盘录入
目的:网络设备,网络输出流
而且操作的是文本数据,可以选择字符流。

步骤:
1.建立服务
2.获取键盘录入
3.将数据发送给服务端
4.接受服务端返回的大写数据
5.结束,关闭资源。

vnsc5858威尼斯城官网 14 1 import java.net.*; 2 import java.io.*; 3 class TransClient 4 { 5 public static void main(String[] args) throws Exception 6 { 7 //建立socket服务 8 Socket s=new Socket("172.29.115.1",10000); 9 //获取键盘录入 10 BufferedReader bufr= 11 new BufferedReader(new InputStreamReader(System.in)); 12 //向服务端发送数据 13 BufferedWriter bufOut= 14 new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); 15 String line=null; 16 //接受服务端返回的数据 17 BufferedReader bufIn= 18 new BufferedReader(new InputStreamReader(s.getInputStream())); 19 while((line=bufr.readLine())!=null) 20 { 21 if("over".equals(line)) 22 break; 23 bufOut.write(line); 24 bufOut.newLine(); 25 bufOut.flush(); 26 27 String str=bufIn.readLine(); 28 System.out.println("server:" str); 29 30 } 31 bufr.close(); 32 s.close(); 33 34 35 36 37 } 38 } 39 class TransServer 40 { 41 public static void main(String[] args) throws Exception 42 { 43 //建立服务 44 ServerSocket ss=new ServerSocket(10000); 45 Socket s=ss.accept(); 46 47 //接受客户端的数据 48 BufferedReader bufIn=new BufferedReader(new InputStreamReader(s.getInputStream())); 49 50 //返回给客户端大写的文本 51 BufferedWriter bufOut=new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); 52 53 String line=null; 54 55 while((line=bufIn.readLine())!=null) 56 { 57 System.out.println(line); 58 bufOut.write(line.toUpperCase()); 59 bufOut.newLine(); 60 bufOut.flush(); 61 } 62 63 ss.close(); 64 65 66 } 67 } View Code

 

14 TCP复制文件

 从客户端向服务端上传文件。

vnsc5858威尼斯城官网 15 1 import java.net.*; 2 import java.io.*; 3 class TextClient 4 { 5 public static void main(String[] args) throws Exception 6 { 7 Socket s=new Socket("127.0.0.1",10006); 8 BufferedReader bufr= 9 new BufferedReader(new FileReader("ChatDemo.java")); 10 PrintWriter out=new PrintWriter(s.getOutputStream(),true); 11 String line=null; 12 while((line=bufr.readLine())vnsc5858威尼斯城官网,!=null) 13 { 14 out.println(line); 15 } 16 s.shutdownOutput(); 17 BufferedReader bufIn=new BufferedReader(new InputStreamReader(s.getInputStream())); 18 String str=bufIn.readLine(); 19 System.out.println("server:" str); 20 bufr.close(); 21 s.close(); 22 23 24 } 25 } 26 class TextServer 27 { 28 public static void main(String[] args) throws Exception 29 { 30 ServerSocket ss=new ServerSocket(10006); 31 Socket s=ss.accept(); 32 System.out.println(s.getInetAddress().getHostAddress() "....connected"); 33 BufferedReader bufIn= 34 new BufferedReader(new InputStreamReader(s.getInputStream())); 35 PrintWriter out=new PrintWriter(new FileWriter("server.txt"),true); 36 String line=null; 37 while((line=bufIn.readLine())!=null) 38 { 39 out.println(line); 40 41 } 42 PrintWriter pw=new PrintWriter(s.getOutputStream(),true); 43 pw.println("上传成功!"); 44 45 s.close(); 46 ss.close(); 47 out.close(); 48 49 } 50 } View Code

 

http://www.bkjia.com/Javabc/1092692.htmlwww.bkjia.comtruehttp://www.bkjia.com/Javabc/1092692.htmlTechArticle网络编程2--毕向东java基础教程视频学习笔记,2--毕向东 Day 23 08 Udp接收端 09 Udp键盘录入数据方式 10 Udp聊天 11 TCP传输 12 TCP传输2 13 TCP练习...

编辑:计算机教程 本文来源:网络编程3--毕向东java基础教程视频学习笔记,

关键词: