网络是什么?网络就是连接在一起共享数据和资源的一组计算机。
按照地理覆盖范围,计算机网络可以划分为局域网、城域网和广域网。
如何记忆:应(应用层)该会(会话层)传(传输层)网(网络层),数据(数据链路层)物理(物理层)都很好。 (应该会传网,数据物理都很好)
服务端的代码
package com.uplook.ch01;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*
* 套接字编程:服务端,接收客户端的请求,处理
*/
public class ServerSocketTest1 {
public static void main(String[] args) {
//1024-65535
try {
System.out.println("服务端正在启动......");
//套接字服务端ServerSocket
ServerSocket server =new ServerSocket(8877);
//创建server服务端 ,监听8877端口号
while(true) {
//客户端套接字Socket
Socket socket =server.accept();
//接收到客户端请求后,创建输入流,通过输入流接收数据
InputStream is =socket.getInputStream();
byte[] bt =new byte[1024];
int length =is.read(bt);
System.out.println(new String(bt,0,length));
//给客户端回信息
String msg ="你好,我是你的粉丝";
//用数组接收
byte[] bt1=msg.getBytes();
//输出流
OutputStream os = socket.getOutputStream();
bt1=msg.getBytes();
//写下内容
os.write(bt1);
os.close();
}
// is.close();
// socket.close();
// server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
客服端的代码
package com.uplook.ch01;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
//客户端Socket 程序,请求服务端,并且传输一定的数据信息给服务端
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientSocket {
public static void main(String[] args) {
try {
Socket sk =new Socket("localhost",8877);
String str ="我是作者";
OutputStream os =sk.getOutputStream();
byte[] bt=str.getBytes();
os.write(bt);
System.out.println("客户端已经给服务端传输了一句话....");
//接收服务端回复的信息
InputStream is = sk.getInputStream();
byte[] bt1 =new byte[1024];
int length =is.read(bt1);
System.out.println("服务端回复的信息是:"+new String(bt1,0,length));
os.close();
sk.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
第二种传送信息的方式 UDP比TCP速度快,但是容易丢包
UDPserviceTest代码
package com.uplook.ch01;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
/*
* UDP服务端,接收客户端发来的数据报包
*/
public class UDPserviceTest {
public static void main(String[] args) throws IOException {
byte[] bt =new byte[1024];
//数据报包
//服务端接收数据报包
DatagramPacket dp =new DatagramPacket(bt, bt.length);
DatagramSocket socket =new DatagramSocket(7766);
//收到
socket.receive(dp);
System.out.println(new String(bt,0,dp.getLength()));
// 1、 DatagramPacket
// 2、通过DatagramSocket send方法来发送数据报包
socket.close();
}
}
UDPClient 代码
package com.uplook.ch01;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
public class UDPClient {
public static void main(String[] args) throws IOException {
//像发送快递一样 这是快递包裹的内容
String str ="你的包裹已经送到目的地";
//打包包裹
byte[] bt =str.getBytes();
//你寄送快递需要你的包裹,你包裹长度,寄送地址是哪里
DatagramPacket dp =new DatagramPacket(bt, bt.length,
new InetSocketAddress("localhost",7766));
//但这里是我的自己寄送快递的家,你得标注自己的家牌号,快递员去你家取货
DatagramSocket ds =new DatagramSocket(8888);
ds.send(dp);
System.out.println("ok.......");
ds.close();
}
}