主要是完成tcp的主机与服务器的通信,软件eclipce
下面是程序,来自大佬博客:https://blog.csdn.net/LJH_laura_li/article/details/82430038
大佬用的不是eclipse,所以想问问怎么打开两个java文件的调试框,进行两端的输入输出
服务器端:
package tcp;
import java.net.*;
import java.io.*;
public class TcpServer {
public static void main(String[] args)throws Exception
{
try{
//建立套接字
ServerSocket server = new ServerSocket(4701);
//监听
Socket socket = server.accept();
//建立连接
InputStreamReader Sysin = new InputStreamReader(System.in);//键盘读入
BufferedReader SysBuf = new BufferedReader(Sysin);
InputStreamReader Socin = new InputStreamReader(socket.getInputStream());//socket读入
BufferedReader SocBuf = new BufferedReader(Socin);
PrintWriter Socout = new PrintWriter(socket.getOutputStream());//写入socket
//通信
System.out.println("Client:"+SocBuf.readLine());//从客户端接收
String readline = SysBuf.readLine();
while(!readline.equals("bye")){
Socout.println(readline);
Socout.flush();
System.out.println("readline"+readline);
String rl = SocBuf.readLine();//检测接收缓冲区,若非ok则打印错误
if(!rl.equals("ok"))
System.out.println("Client:"+rl);
else
break;
readline = SysBuf.readLine();
}
//关闭IO、socket
Socout.close();
Socin.close();
server.close();
}catch (Exception e){
System.out.println("Error:"+e);
}
}
}
主机端:
package tcp;
import java.net.*;
import java.io.*;
public class TcpClient {
public static void main(String[] args)throws Exception {
try{
//创建socket
Socket socket = new Socket("192.168.1.4",4700);
//建立连接
InputStreamReader Sysin = new InputStreamReader(System.in);//键盘读入
BufferedReader SysBuf = new BufferedReader(Sysin);
InputStreamReader Socin = new InputStreamReader(socket.getInputStream());//socket读入
BufferedReader SocBuf = new BufferedReader(Socin);
PrintWriter Socout = new PrintWriter(socket.getOutputStream());//写入socket
//进行通信
String readline = SysBuf.readLine();//等待键盘键入字符
while(!readline.equals("bye")){//如果是bye则停止互相发送
Socout.println(readline);//写入socket
Socout.flush();//刷新缓冲区,让服务器立刻接收到新的消息
System.out.println("Client:"+readline);
//上3,客户端向服务器发信息
//发回客户端
System.out.println("Server:"+SocBuf.readLine());//readLine如果未接收到则会停在这里
readline = SysBuf.readLine();//客户端再发向服务器
}
//关闭IO和socket
Socout.close();
Socin.close();
socket.close();
}catch(Exception e){
System.out.println("Error:"+e);}//打印错误
}
}
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
//服务端
public class Server {
public static void main(String[] args) throws Exception{
DatagramSocket ds = new DatagramSocket(9900);
String s = "你好客户端,我是服务端,能收到吗";
int length = s.getBytes().length;
String ip = "127.0.0.1";
int port = 9911;
DatagramPacket dp = new DatagramPacket(s.getBytes(), length, InetAddress.getByName(ip), port);
ds.send(dp);
byte[] bytes = new byte[1024];
int length1 = bytes.length;
DatagramPacket dp1 = new DatagramPacket(bytes, length1);
ds.receive(dp1);
byte[] data = dp1.getData();
System.out.println(new String(data, 0, data.length));
ds.close();
}
}
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class Client {
//客户端
public static void main(String[] args) throws Exception{
DatagramSocket ds = new DatagramSocket(9911);
byte[] bytes = new byte[1024];
int length = bytes.length;
DatagramPacket dp = new DatagramPacket(bytes, length);
ds.receive(dp);
byte[] data = dp.getData();
System.out.println(new String(data, 0, data.length));
String s = "你好服务端,我是客户端,能收到";
int length1 = s.getBytes().length;
String ip = "127.0.0.1";
int port = 9900;
DatagramPacket dp1 = new DatagramPacket(s.getBytes(), length1, InetAddress.getByName(ip), port);
ds.send(dp1);
ds.close();
}
}
先启动server,再启动client,再client的运行console进行内容输入。如果想看server接收的结果可以切换到server的console。client输入bye结束调试