16.1有名端口
Tomcat:8080
Mysql:3306
Oracle:1521
Sqlserver:1433
16.2文字传输
1.编写一个服务器端, 和一个客户端
2.服务器端在 9999端口监听
3.客户端连接到服务器端,发送 “hello, server” , 然后退出
4.服务器端接收到 客户端发送的 信息,输出,并退出
ServerSocketserverSocket=newServerSocket(9999);
//监听,如果没有客户端连接,服务器阻塞...
System.out.println("服务器在 9999端口监听,等待连接");
Socketsocket=serverSocket.accept();
//获取该socket的输入流
InputStreaminputStream=socket.getInputStream();//运行类型 SocketInputStream
byte[]buffer=newbyte[1024];
intlen=0;
while((len=inputStream.read(buffer))!=-1) {
System.out.println("服务端:收到客户端信息 "+newString(buffer,0,len));
}
inputStream.close();
socket.close();
serverSocket.close();
publicclassClient01{
publicstaticvoidmain(String[]args)throwsException{
//客户端,连接服务器的 9999端口
Socketsocket=newSocket(InetAddress.getLocalHost(),9999);
//得到输出流, 字节流
//outputStream 运行类型 是 SocketOutputStream
OutputStreamoutputStream=socket.getOutputStream();
outputStream.write("hello, server~".getBytes());
outputStream.close();
socket.close();
}
}
16.3图片传输
1.编写一个服务器端, 和一个客户端
2.服务器端在 9999端口监听
3.客户端连接到服务器端,发送 一张图片
4.服务器端接收到 客户端发送的 图片,保存到 src下, 发送 “收到” 再退出
5.客户端接收到服务器端发送的 “收到”, 再退出
publicclassClient04{
publicstaticvoidmain(String[]args)throwsException{
//客户端,连接服务器的 9999端口
Socketsocket=newSocket(InetAddress.getLocalHost(),9999);
//得到文件的输入字节流
BufferedInputStreamfileBufferedInputStream=
newBufferedInputStream(newFileInputStream("d:\\a.jpg"));
OutputStreamoutputStream=socket.getOutputStream();
byte[]buffer=newbyte[1024];
intlen=0;
while( (len=fileBufferedInputStream.read(buffer))!=-1) {
//读取部分,就写入到 SocketOutputStrem
outputStream.write(buffer,0,len);
}
socket.shutdownOutput();
//收到服务器
InputStreaminputStream=socket.getInputStream();
BufferedReaderbufferedReader=newBufferedReader(newInputStreamReader(inputStream));
Stringres=bufferedReader.readLine();
System.out.println("客户端: 收到服务器的消息 "+res);
//关闭
fileBufferedInputStream.close();
outputStream.close();
socket.close();
}
}
publicclassServer04{
publicstaticvoidmain(String[]args)throwsException{
// TODO Auto-generated method stub
//服务端在 9999端口监听,等待客户端连接.
ServerSocketserverSocket=newServerSocket(9999);
//监听,如果没有客户端连接,服务器阻塞...
System.out.println("服务器在 9999端口监听,等待连接");
Socketsocket=serverSocket.accept();
//先获取 SocketInputStream
InputStreaminputStream=socket.getInputStream();
BufferedOutputStreamfileBufferedOutputStream=newBufferedOutputStream(newFileOutputStream("src\\myimage.jpg"));
byte[]buffer=newbyte[1024];
intlen=0;
while( (len=inputStream.read(buffer))!=-1) {
//边读边写
fileBufferedOutputStream.write(buffer,0,len);
}
//给客户端回复 "收到"
OutputStreamoutputStream=socket.getOutputStream();
BufferedWriterbufferedWriter=newBufferedWriter(newOutputStreamWriter(outputStream));
bufferedWriter.write("哥们,收到~");
bufferedWriter.newLine();
bufferedWriter.flush();
inputStream.close();
fileBufferedOutputStream.close();
socket.close();
serverSocket.close();
System.out.println("完成,ok~");
}
}
16.4TCP数据传输流程
