socket通信:
服务端程序:
利用ServerSocket编写服务端
首先创建ServerSocket对象
服务端程序必须暴露出端口,端口最好在1024
以上,最大不超过65535
ServerSocket server=newServerSocket(1898);
服务器等待客户端来请求,有请求,则往下走
SocketclientSocket=server.accept();
分别得到输入输出流
InputStream in=clientSocket.getInputStream();
OutputStreamout=clientSocket.getOutputStream();
通过输入输出流得到读写操作的接口
BufferedReaderreader=new
BufferedReader(newInputStreamReader(in));
PrintWriter writer=newPrintWriter(out,true);
得到客户端的输入内容
StringclientStr=reader.readLine();
if(clientStr!=null){
System.out.println(clientStr);
}
//给客户端发送内容
writer.println("收到您的来信");
最后一步:需要关闭各种流和客户端socket
reader.close();
writer.close();
clientSocket.close();
客户端程序:
客户端请求服务端程序,必须给出ip和端口。
首先创建客户端Socket
Socket socket=newSocket("127.0.0.1",1898);
同样,得到输入输出流
OutputStreamout=socket.getOutputStream();
InputStreamin=socket.getInputStream();
通过输入输出流,得到读写对象
PrintWriter writer=newPrintWriter(out,true);
BufferedReaderreader=new BufferedReader(new InputStreamReader(in));
有了写内容的对象,就可以给服务端发送内容
writer.println(“你好”);
有了读内容的对象,就可以读取服务端的内容
StringserverMsg=reader.readLine();
最后也必须关掉各种流和socket连接
reader.close();
writer.close();
socket.close();
socket通信:
服务端代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;
import java.util.HashMap;
import java.util.Map;
publicclass ServerTest {
/**
* 建立Socket服务端
* @param args
* @throws IOException
*/
publicstaticvoid main(String[] args) throws IOException {
// 创建服务端
// 端口最好大于1024 必须小于65535
ServerSocketserver=new ServerSocket(1998);
System.out.println("=====服务器启动======");
while(true){
// 等待客户端的请求,没有请求,就不会继续往下执行
//阻塞方法,在这里等待
SocketclientSocket=server.accept();
SocketAddressclientAddress=clientSocket.getRemoteSocketAddress();
InputStreamin=clientSocket.getInputStream();
OutputStreamout=clientSocket.getOutputStream();
//通过输入输出流得到读写操作的接口
BufferedReaderreader=new BufferedReader(new InputStreamReader(in));
PrintWriterwriter=new PrintWriter(out,true);
Stringclientmsg=reader.readLine();
System.out.println("客户发送的信息是:" + clientmsg);
if(clientmsg!=null){
writer.println(clientmsg);
}
// 关闭reader
reader.close();
// 关闭writer
writer.close();
// 关闭socket连接
clientSocket.close();
}
}
}
要先启动服务器
客户端代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
publicclass ClientTest {
/**
* 客户端socket
* @param args
* @throws IOException
* @throws IOException
*/
publicstaticvoid main(String[] args) throws IOException {
Socketsocket=new Socket("127.0.0.1",1998);
OutputStreamout=socket.getOutputStream();
InputStreamin=socket.getInputStream();
PrintWriterwriter=new PrintWriter(out,true);
BufferedReaderreader=new BufferedReader(new InputStreamReader(in));
writer.println("hello 啊 java");
StringserverMsg=reader.readLine();
if(serverMsg!=null){
System.out.println("服务端来信: "+serverMsg);
}
reader.close();
writer.close();
socket.close();
}
}