Socket也叫套接字。
Socket编程也叫套接字编程也叫网络编程。
Socket编程有3个要素必须满足,才能进行通信。
1、IP地址
2、端口号
3、使用某种传输协议(TCP、UDP)
TCP:
客户端:
第一步:创建一个Socket对象。需要指定连接哪个IP,指定端口号。
(连接指定的服务器)
第二步:获取输出流
第三步:写入要发送的数据
第四步:关闭流(try with resource或finally里关)
服务器:
第一步:创建服务端socket对象,这个服务器socket与客户端socket不一样
是一个特殊的socket,这个socket要监听一个端口号。
第二步:开始监听 (accept方法)。一旦有客户端socket连接了这个端口,就
会创建一个反向的socket与之相连。此时就建立了一个通道。所有的数据
在通道里传输。
第三步:获取输入流
第四步:从输入流里读取数据
第五步:关闭 反向socket (服务器的socket不用关)
UDP:
一个数据报最大是64k。传输少量信息,而且对安全要求不高的时候,可以使用
UPD。如果传输信息量比较大,使用TCP。
客户端
第一步:创建一个DatagramSocket
第二步:创建一个DatagramPacket(创建它的时候,需要InetAddress,还需要
数据,端口号)
第三步:发送数据报包:ds.send(dp);
第四步:关闭DatagramSocket(try with resource)
服务端:
第一步:创建一个DatagramSocket(监听一个端口)
第二步:创建一个DatagramPacket用于接收数据。
第三步:接收数据 ds.receive(dp)
第四步:提取拿到的包的内容,并使用
第五步:关闭DatagramSocket(try with resource)
如何查看本机的IP地址?
第一步:win+R
第二步:输入cmd,回车
第三步:ipconfig 回车
public class ClientTCP {
public static void main(String[] args) {
try(Socket s = new Socket("10.10.15.191",12306);
InputStream is = System.in;
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
OutputStream os = s.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);) {
String msg = null;
while((msg=br.readLine())!=null) {
bw.write(msg);
bw.newLine();
bw.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class ServiceTCP {
public static void main(String[] args) {
ServerSocket ss = null;
try {
ss = new ServerSocket(12306);
} catch (IOException e1) {
e1.printStackTrace();
}
try(Socket s = ss.accept();) {
InputStream is = s.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String msg = null;
while((msg=br.readLine())!=null) {
br.readLine();
}
System.out.println(msg);
} catch (IOException e) {
e.printStackTrace();
}
}