mport java.io.*;
import java.net.*;
class TransClient
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("193.133.1.253",999);
BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));
//BufferedWriter bufOut =
//new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
PrintWriter out = new PrintWriter(s.getOutputStream(),true);//上面那步怎么演变成这一步了?
BufferedReader bufIn =
new BufferedReader(new InputStreamReader(s.getInputStream()));//为什么要用s调用getInputStream呢 ?
String line = null;
while((line=bufr.readLine())!=null)
{
if("over".equals(line))
break;
String str =bufIn.readLine();
System.out.println("server:"+str);
}
bufr.close();
s.close();
}
}
第二段。
import java.net.*;
class UdpSend
{
public static void main(String[] args) throws Exception
{
DatagramSocket ds = new DatagramSocket(3333);
byte[] buf = "udp ge men lai le ".getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("193.133.1.253"),33333);
ds.send(dp);
ds.close();
}
}
//这个文件老师存的时候是UdpDemo.java,编译时是UdpDemo.java,可是运行时怎么用UdpSend();不懂???
1: //BufferedWriter bufOut =
//new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
PrintWriter out = new PrintWriter(s.getOutputStream(),true);//上面那步怎么演变成这一步了?
① PrintWriter:向文本输出流打印对象的格式化表示形式,它的底层是个PrintStream,也就是字节流所有可以接收
OutputStream,就是说它能自动把字符流转换成字节流
②而BufferddWriter,底层还是一个字符流,无法将字符流转换成字节流,所以需要OutputStreamWriter转换
③PrintWriter是java平台为我们提供的一个非常好的格式化输出类,非常方便,所以老师就用现成的好东西了,哈哈,
何必非要自己动手做?
2、 BufferedReader bufIn =
new BufferedReader(new InputStreamReader(s.getInputStream()));//为什么要用s调用getInputStream呢 ?
①这里的s值的是一个Socket,Socket其实内部包装了一个InputStream和一个outputStream,用于下载和上传。
② 当你要下载数据时,就到InputStream流里面读取就可以了。
当你要上传数据时,就把数据写入OutputStream流中了
③如果把Socket比作一条网线,那么InputStream就是其中的下载线,而OutputStream就是上传线了。
④网络上面的数据其实都包装在一个Socket里面了,你可以通过Socket读数据,写数据等等。
|