java实现socket服务器与客户端的通信,此处只用示例代码说明
服务器端代码
主程序:
package netWork;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Service {
public static int i = 1;
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ServerSocket serverSocket = new ServerSocket(5202);
Socket socket = null;
while(true){
socket = serverSocket.accept();
System.out.println("客户端"+(i++)+"连接成功");
Runnable runnable = new MyRunnable(socket);
thread thread = new Thread(runnable);
thread.start();
}
}
多线程:
package netWork;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class MyRunnable implements Runnable{
private Socket socket;
String [] advices={"多吃水果","少吃垃圾食品","早睡早起","多运动","多出去走走","出去玩玩啊"};
public MyRunnable(Socket socket) {
// TODO Auto-generated constructor stub
this.socket = socket;
}
@Override
public void run() {
// TODO Auto-generated method stub
String advice = getAdvice();
try {
InputStreamReader inputStreamReader = new InputStreamReader(socket.getInputStream(),"UTF-8");
BufferedReader bufferedInputStream = new BufferedReader(inputStreamReader);
PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
//while(true){
String mString = bufferedInputStream.readLine();
System.out.println("这是来自客户端信息: "+mString);
printWriter.println("这是来自服务器的信息: "+advice);
printWriter.flush();
//}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private String getAdvice() {
// TODO Auto-generated method stub
int random = (int)(Math.random()*advices.length);
return advices[random];
}
}
客户端代码
package com.myfirstprac;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Cdateinfo {
public void go() throws UnknownHostException, IOException {
Socket socket = new Socket("127.0.0.1", 5202);
PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
InputStreamReader inputStreamReader = new InputStreamReader(socket.getInputStream(),"UTF-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
printWriter.println("hh,我是客户端");
printWriter.flush();
String msg = bufferedReader.readLine();
System.out.println(msg);
printWriter.close();
socket.close();
}
public static void main(String[] args) throws UnknownHostException, IOException {
// TODO Auto-generated method stub
Cdateinfo cdateinfo = new Cdateinfo();
cdateinfo.go();
}
}