首先这只是简单的 socket
直接代码:服务器代码
package SocKet;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.Charset;
public class Server {
private ServerSocket ss;
private InputStreamReader inputStreamReader;
private BufferedReader bufferedReader;
public void server(){
try {
//<span style="color:#FF6666;">让服务器端程序开始监听来自9000端口的客户端请求</span><span style="color:#3333FF;">端口号是我随便写的 ,没被占用即可。我也不太清楚怎么检测端口号,会的希望留言</span>。
if (ss==null) {
ss = new ServerSocket(9000);
System.out.println("服务器启动...");
}
//服务器无穷的循环等待客户端的请求
while(true){
/*
*accept()方法会在等待用户的socket连接时闲置着,当用户链接
*上来时,此方法会返回一个socket(在不同的端口上)以便与客户端
*通信。Socket与ServerSocket的端口不同,因此ServerSocket可以
*空闲出来等待其他客户端
*/
//这个方法会停下来等待要求到达之后再继续
Socket s = ss.accept();
inputStreamReader = new InputStreamReader(s.getInputStream());
bufferedReader = new BufferedReader(inputStreamReader);
String request = bufferedReader.readLine();
System.out.println("接收到了客户端的请求:"+request);
//PrintWriter printWriter = new PrintWriter(s.getOutputStream());
//<span style="color:#3333FF;">同样解决乱码问题</span>
<span style="color:#FF0000;"> PrintWriter output = new PrintWriter(new OutputStreamWriter(s.getOutputStream(),"UTF-8"),true);</span>
String advice = "在哪呢?";
output.println(advice);
output.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
Server server = new Server();
server.server();
}
}
客户端代码:
package SocKet;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.nio.charset.Charset;
public class Scoket {
public void go() throws UnknownHostException, IOException
{
//获得地址/端口
Socket socket=new Socket("127.0.0.1", 9000);
//客户端获得的数据发送到服务器
PrintWriter printwrite=new PrintWriter(socket.getOutputStream());
System.out.println("正在建立连接....");
//printwrite.println("sdfsdf");
printwrite.println("我的家乡");
printwrite.flush();
//客户端接收数据时设置编码方式:<span style="color:#33CC00;">可以解决乱码问题</span>
<span style="color:#FF0000;"> InputStreamReader isr=new InputStreamReader(socket.getInputStream(),"UTF-8");</span>
// BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));
BufferedReader bf=new BufferedReader(isr);
String news=bf.readLine();
System.out.println("服务器的得到的数据是:--"+news);
bf.close();
}
public static void main(String[]args) throws UnknownHostException,IOException
{
Scoket s=new Scoket();
s.go();
}
}
是用步骤:我是在自己的 本机上测试的;工具就是eclipse
首先创建两个类 :server.java 和 Scoket.java代码如上
先运行 Server类 运行服务器 控制台显示如下:
接着 运行 Scoket.java 注意什么也不要做 直接切换到Scoket.java类中运行
服务器显示如下:
客户端控制台显示如下:
在控制台上可以切换显示不同类的控制,也就是eclipse 同时在运行着两个类
切换如下:
点击控制台这个按钮即可。