步骤:
导包
api介绍
示例
结果
导包
新建工程,一路next,jdk1.8,命令行。hello,world没问题。

新建java文件,和类名一样。
服务端
package socket.socket1.socket;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerSocketTest {
public static void main(String[] args) {
try {
// 初始化服务端socket并且绑定9999端口
ServerSocket serverSocket =new ServerSocket(6666);
//等待客户端的连接
Socket socket = serverSocket.accept();
//获取输入流
BufferedReader bufferedReader =new BufferedReader(new InputStreamReader(socket.getInputStream()));
//读取一行数据
String str = bufferedReader.readLine();
//输出打印
System.out.println(str);
}catch (IOException e) {
e.printStackTrace();
}
}
}
telnet测试



Linux下的socket需要选地址,bind,listen,accept阻塞,recv
这里默认省略bind和listen。
保留accept阻塞。
recv变成read。这里readline是要读到\n才是跳出的标志。客户端也是要对应给换行,则server会结束服务。
关键API:
new ServerSocket(6666);
Socket socket = serverSocket.accept();
new InputStreamReader(socket.getInputStream())
ServerSocket serverSocket = new ServerSocket();
ServerSocket();//无参数
ServerSocket(int port);//指定端口
ServerSocket(int port,int backlog);//指定端口、队列数
ServerSocket(int port,int backlog,InetAddress bindAddr);//指定端口、队列数、绑定IP同主机的使用:
serverSocket.bind(SocketAddress endpoint);//指定端口
serverSocket.bind(SocketAddress endpoint,int backlog)//指定端口、队列数
客户端
package com.company;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class ClientSocket {
public static void main(String[] args) {
try {
Socket socket =new Socket("127.0.0.1",6666);
BufferedWriter bufferedWriter =new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String str="socket";
bufferedWriter.write(str);
bufferedWriter.flush();
socket.shutdownOutput();
}catch (IOException e) {
e.printStackTrace();
}
}
}
socket.shutdownOutput();//相当于FIN标志发送,第一次挥手。close则是不等回消息了,shutdown还可以收消息。
客户端不结束快
Thread.sleep(20000);
System.out.println(“delay”);
运行了close后,再改回来,删掉close也不报错了。有点奇怪的地方。
该文章演示了如何在Java中使用Socket进行简单的服务器和客户端通信。服务端创建ServerSocket监听特定端口,接受客户端连接,读取并打印接收到的数据。客户端通过Socket连接服务器,发送数据后关闭输出流。涉及的关键API包括ServerSocket的构造方法和Socket的accept、getInputStream、getOutputStream等。
627

被折叠的 条评论
为什么被折叠?



