62,614
社区成员
发帖
与我相关
我的任务
分享
Socket socket = server.accept();
MultiThreadServer mc = new MultiThreadServer(socket);
System.out.println("accept connect: " + socket.getInetAddress().getHostAddress());
mc.start();
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class MultiThreadServer extends Thread {
private Socket client;
public MultiThreadServer(Socket c) {
this.client = c;
}
public void run() {
try {
System.out.println(Thread.currentThread().getName() + " start");
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
OutputStreamWriter out = new OutputStreamWriter(client.getOutputStream());
// BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
// out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
String str = in.readLine();//接收信息
while (str != null) {
System.out.println("server receive: " + str);//将接收到的信息打印出来
out.write('2');//信息写入输出流
out.flush();//写回client需要flush
System.out.println("ok");
str = null;//清空数据,以跳出循环
}
System.out.println(Thread.currentThread().getName() + " end");
out.close();
} catch (IOException e) {
}
}
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(1234);
System.out.println("server is start!");
while (true) {
MultiThreadServer mc = new MultiThreadServer(server.accept());
System.out.println("accept connect: " + server.getInetAddress().getHostAddress());
mc.start();
}
}
}
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
int i = 1;
while (i < 100) {
String clientName = "client" + i;
try {
Socket socket = new Socket("127.0.0.1", 1234);
OutputStream out = socket.getOutputStream();
String msg = "hello,world" + i + "\r";
out.write(msg.getBytes());
out.flush();//刷新缓冲区数据,发送给服务端
System.out.println(clientName + " send: " + msg);
InputStream in = socket.getInputStream();
byte[] bytes = new byte[1024];//假定服务传回数据少于1024 byte
int result = in.read(bytes);
if (result > 0) {
System.out.println(clientName + "receive: " + new String(bytes));
}
System.out.println(clientName + " end!");
Thread.sleep(2000);
i++;
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Uart1Sends("AT+CIPSEND\r\n");//开始准备发送数据
delay_ms(2000);
Uart1Sends("1");//向服务器发送的具体数据 "储物箱在线!可执行任务!"
delay_ms(2000);
Uart1Send(0x1a);//以0x1a结束
GsmAtFlag=0;
break;
好像这里客户端发一个字符1,然后发了0x1a,肯定没发回车换行,所以你服务器侧去readLine肯定没返回。
改
byte [] buffer = new byte[2];
in.read(buffer)
......
public void run()
{
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
OutputStreamWriter out = new OutputStreamWriter(client.getOutputStream());
//BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
//out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
String str = in.readLine();//接收信息
while (str!=null)
{
System.out.println(str);//将接收到的信息打印出来
out.write('2');//信息写入输出流
System.out.println("ok");
str=null;//清空数据,以跳出循环
}
}
catch (IOException e)
{
}
}