example9_4.java
来自「书中的例题」· Java 代码 · 共 146 行
JAVA
146 行
/* 客户机端程序 */
import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
class C_client extends Frame implements ActionListener
{
TextArea txt1;
Button btn;
Panel p;
int port;
DataInputStream in=null; //数据输入流
DataOutputStream out=null; //数据输出流
Socket c_socket; //套接字
InputStream in_data; //接收到的输入流
OutputStream out_data; //发送的输出流
String str; //存放接收的数据
int i=0;
C_client()
{
super("客户端");
setSize(300,200);
setVisible(true);
txt1=new TextArea(5,4);
add(txt1,BorderLayout.CENTER);
p=new Panel();
add(p,BorderLayout.NORTH);
btn=new Button("连接");
p.add(btn);
btn.addActionListener(this);
validate();
}
public static void main(String[] args)
{ new C_client(); }
public void actionPerformed(ActionEvent eee)
{
try{
c_socket=new Socket("192.168.1.1",4321);
}catch(IOException e){ System.out.println("找不到服务器"); }
try{
in_data=c_socket.getInputStream();
out_data=c_socket.getOutputStream();
in=new DataInputStream(in_data);
out=new DataOutputStream(out_data);
//获取到对方及本机的端口号
int p1= c_socket.getPort() ;
int p2= c_socket.getLocalPort() ;
txt1.append("获取到对方的端口号: "+p1+"\n");
txt1.append("本机的端口号: "+p2+"\n");
}catch(IOException e){ System.out.println("建立输入输出流出错"); }
try{
str=in.readUTF();
txt1.append("客户收到:"+str+"\n");
if (i>10) {
out.writeUTF("end");
in.close();
out.close();
c_socket.close();
System.exit(0);
}//发出end信息
else
{ out.writeUTF("I am Client");
i++;
}
}catch(IOException e){ System.out.println("线路读写出错"); }
}
}
/* 服务器端程序 */
import java.net.*;import java.io.*;
import java.awt.*;import java.awt.event.*;
class S_server extends Frame implements ActionListener,Runnable
{
ServerSocket s_socket; //服务器端套接字
Socket c_socket; //套接字
DataInputStream in=null; //数据输入流
DataOutputStream out=null; //数据输出流
InputStream in_data; //接收到的输入流
OutputStream out_data; //发送的输出流
int i=0; //计数(连接的客户数)
String str;
TextArea txt1;
Button btn;
Panel p;
S_server()
{
super("server");
setSize(300,200);
setVisible(true);
txt1=new TextArea(5,4);
add(txt1,BorderLayout.CENTER);
p=new Panel();
add(p,BorderLayout.NORTH);
btn=new Button("开始监听端口");
p.add(btn);
validate();
btn.addActionListener(this);
}
public void actionPerformed(ActionEvent eee)
{
try{
s_socket=new ServerSocket(4321);
while(true)
{
c_socket=s_socket.accept();
Thread t=new Thread(this);
t.start();
i++;
}
}catch(IOException e){ }
}
//线程
public void run()
{
try {
while(true)
{
in_data=c_socket.getInputStream();
out_data=c_socket.getOutputStream();
in=new DataInputStream(in_data);
out=new DataOutputStream(out_data);
out.writeUTF("Hello,我是服务器");
str=in.readUTF();
if (str.equals("end"))
{//接收到end信息,则断开连接
in.close();
out.close();
c_socket.close();
}
txt1.append("第"+i+"个客户发来:"+str+"\n");
Thread.sleep(200);
} //while_end
}
catch(IOException e){ }
catch(Exception ee){ } //Thread_catch
}
public static void main(String[] args)
{
new S_server();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?