java socket 通讯小例子
程序员文章站
2022-04-09 13:11:45
...
例子1:服务端接受客户端请求
我们先来写服务端代码:
package com.uwo9.test02;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服务器
* 1.创建ServerSocket (需要绑定端口)
* 2.开启监听 (阻塞线程) 得到客户端传递过来的socket
* 3.通过socket读取客户端发送的数据
* 4.将数据打印在控制台
* 5.关闭io流,关闭socket
*
*/
public class TestServer {
public static void main(String[] args) throws IOException {
// 1.创建ServerSocket(需要绑定端口)
ServerSocket serverSocket = new ServerSocket(8888);
// 2.开启监听(阻塞线程)得到客户端传递过来的socket
Socket socket = serverSocket.accept();
// 3.通过socket读取客户端发送的数据
InputStream iStream = socket.getInputStream();
// 数据流
DataInputStream dStream = new DataInputStream(iStream);
String content = dStream.readUTF();
InetAddress cInetAddress = socket.getInetAddress();
// 4.将数据打印在控制台
System.out.println("客户端主机名:" + cInetAddress.getHostName());
System.out.println("IP:" + cInetAddress.getHostName());
System.out.println("发送数据:" + content);
// 5.关闭io流,关闭socket
iStream.close();
socket.close();
serverSocket.close();
}
}
下面来写客户端代码:
package com.uwo9.test02;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
/**
* 客户端
* 1.创建socket 指定服务器的ip,端口
* 2.通过io发送数据
* 3.关闭io流、socket
*
*/
public class TestClient {
public static void main(String[] args) throws IOException {
// 1.创建socket 指定服务器的ip,端口
Socket socket = new Socket("127.0.0.1", 8888);
// 2.通过io发送数据
OutputStream oStream = socket.getOutputStream();
DataOutputStream dStream = new DataOutputStream(oStream);
String content = "你好";
dStream.writeUTF(content);
// 3.关闭io流、socket
oStream.close();
socket.close();
}
}
这样我们就实现了一个简单的服务端接受客户请求的小例子。
下面我们再将程序升级为对话。
例子2:实现客户端与服务器之间的对话。
服务器端代码:
package com.uwo9.test03;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
/**
* 服务器
* 1.创建ServerSocket (需要绑定端口)
* 2.开启监听 (阻塞线程) 得到客户端传递过来的socket
* 3.通过socket读取客户端发送的数据
* 4.将数据打印在控制台
* 5.关闭io流,关闭socket
*/
public class TestServer {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
// 1.创建ServerSocket(需要绑定端口)
ServerSocket serverSocket = new ServerSocket(8888);
Socket socket = null;
InputStream iStream = null;
DataInputStream dStream = null;
OutputStream oStream = null;
DataOutputStream dOutputStream = null;
int i = 0;
while (i++ < 10) {
// 2.开启监听(阻塞线程)得到客户端传递过来的socket
socket = serverSocket.accept();
// 3.通过socket读取客户端发送的数据
iStream = socket.getInputStream();
// 数据流
dStream = new DataInputStream(iStream);
String content = dStream.readUTF();
InetAddress cInetAddress = socket.getInetAddress();
// 4.将数据打印在控制台
System.out.println("客户端主机名:" + cInetAddress.getHostName());
System.out.println("IP:" + cInetAddress.getHostAddress());
System.out.println("客户端:" + content);
// 服务器给客户端发送数据
oStream = socket.getOutputStream();
dOutputStream = new DataOutputStream(oStream);
System.out.println("请输入要回复的数据:");
// String backMsg = sc.next();
// 读取一行
String backMsg = sc.nextLine();
// 读取一行
dOutputStream.writeUTF(backMsg);
}
// 5.关闭io流,关闭socket
sc.close();
iStream.close();
dOutputStream.close();
oStream.close();
socket.close();
serverSocket.close();
}
}
客户端代码:
package com.uwo9.test03;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
/**
* 客户端 1.创建socket 指定服务器的ip,端口 2.通过io发送数据 3.关闭io流、socket
*
*
*/
public class TestClient {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
// 1.创建socket 指定服务器的ip,端口
// Socket socket = new Socket("127.0.0.1", 8888);
Socket socket = null;
// 2.通过io发送数据
OutputStream oStream = null;
DataOutputStream dStream = null;
InputStream iStream = null;
DataInputStream dis = null;
int i = 0;
while (i++ < 10) {
socket = new Socket("127.0.0.1", 8888);
oStream = socket.getOutputStream();
dStream = new DataOutputStream(oStream);
System.out.println("请输入要发送的数据:");
String content = sc.nextLine();
dStream.writeUTF(content);
// 接受服务器数据
iStream = socket.getInputStream();
dis = new DataInputStream(iStream);
System.out.println("服务器:"+dis.readUTF());
}
// 3.关闭io流、socket
sc.close();
oStream.close();
dis.close();
iStream.close();
socket.close();
}
}
好了,完成了。
上一篇: 简单的socket例子