首先,什么是Socket呢?
直接上链接吧 百度解释的挺好的
哈哈,偷个懒,链接如下
https://baike.baidu.com/item/socket/281150?fr=aladdin
然后现在我们就用Socket来写一个简单的信息收发的程序
信息收发得需要一个服务端(接收信息)和一个客户端(发送信息)
代码如下:
服务端:
package com.baidu.demo.test14;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
//服务端
public static void main(String[] args) {
try {
//创建一个Socket服务 端口为1221
ServerSocket ss = new ServerSocket(1221);
System.out.println("监听端口号:1221");
//在1221端口上监听,看是否有连接请求过来,有连接过来后才开始执行下面的代码
Socket s = ss.accept();
System.out.println(s+"已连接");
//得到输入流数字并打印
InputStream in = s.getInputStream();
System.out.println(in.read());
//得到输入流中文并打印
DataInputStream dis = new DataInputStream(in);
System.out.println(dis.readUTF());
s.close();
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端:
package com.baidu.demo.test14;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
//客户端
public static void main(String[] args) {
try {
//创建一个Socket,连接到本机(127.0.0.1),端口是1221,启动该程序之前需要先把服务端程序启动
Socket s = new Socket("127.0.0.1",1221);
System.out.println("连接成功");
//得到输出流并输出信息到服务端数字
OutputStream out = s.getOutputStream();
out.write(123123123);
//得到输出流并输出信息到服务端中文
DataOutputStream dos = new DataOutputStream(out);
dos.writeUTF("中文");
dos.close();
s.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我们首先得把服务端运行起来
然后再运行客户端
服务端运行情况:
客户端运行情况:
因为我是在客户端连接成功后就向服务端发送两条数据
分别是:“123123123”和“中文”两个数据
运行客户端后我们切换到服务端的控制台,可以看到:
这就说明我们的信息发送和接受成功了
ecllipse中切换两个控制台的方法如下
怎么说呢
本篇讲的可以说是很草率了
但是基本的Socket使用方法已经写了
大家可以根据我写的进行改进
比如说改进成一个简易的聊天室
这个你们自己下来改进啦,展现你身手的时候到了
能写出来一个聊天室说明你的Java基础已经学的不错了
哈哈
就这样吧