📄 program5.txt
字号:
System.out.println("Please enter a hostname:");
}
catch(UnknownHostException e)
{
e.printStackTrace();
}
}
}
_____________________________________________________
_____________________________________________________
5.3.2 Socket类和ServerSocket类
//客户端程序ClientTest.java
import java.io.*;
import java.net.*;
public class ClientTest
{
public static void main(String[] args)
{
try
{
String s;
String line="";
Socket mySocket = new Socket(InetAddress.getLocalHost(),800);
PrintStream os = new PrintStream( new BufferedOutputStream(mySocket.getOutputStream()));
DataInputStream dis = new DataInputStream(mySocket.getInputStream());
s = dis.readLine();//从Server端读入的数据
System.out.println(s);
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
line = in.readLine();
while(!line.equals("Bye"))
{
os.println(line);
os.flush();
line = in.readLine();
}
os.close();
dis.close();
mySocket.close();
}
catch (IOException e)
{
System.out.println("ClientException"+e);
}
}
}
————————————————————————————
//服务器端程序ServerTest.java
import java.io.*;
import java.net.*;
public class ServerTest
{
public static void main(String[] args)
{
try
{
boolean flag = true;
Socket linkSocket = null;
String inputLine;
ServerSocket myServer = new ServerSocket(800);
System.out.println("Server listen on:"+myServer.getLocalPort());
while(flag)
{
linkSocket = myServer.accept();
DataInputStream dis = new DataInputStream(new BufferedInputStream(linkSocket.getInputStream()));
//获得从Client读入的数据流
PrintStream ps = new PrintStream(new BufferedOutputStream(linkSocket.getOutputStream()));
//获得向Client输出的数据流
ps.println("Hello! Wellcome connect to my server!");
ps.flush();//向Client端输出信息
inputLine = dis.readLine();//从Client读入信息
while(!inputLine.equals("Bye"))
{
System.out.println("Client端输入的信息为:"+inputLine);
inputLine = dis.readLine();
}
ps.close();
dis.close();
linkSocket.close();
myServer.close();
}
}
catch (IOException e)
{
System.out.println("ServerException"+e);
}
}
}
————————————————————————————
//多线程服务器端程序ServerMulti.java
import java.io.*;
import java.net.*;
public class ServerMulti
{
ServerMulti()
{
try
{
boolean flag = true;
Socket links = null;
ServerSocket myServer = new ServerSocket(800);
System.out.println("Server listen on:"+myServer.getLocalPort());
while(flag)
{
links = myServer.accept();
ServiceThread myST = new ServiceThread(links);
myST.start();
}
}
catch (IOException e)
{
System.out.println("ServerException"+e);
}
}
public static void main(String[] args)
{
new ServerMulti();
}
}
class ServiceThread extends Thread
{
Socket linkSocket;
String inputLine;
public ServiceThread(Socket ls)
{
linkSocket = ls;
}
public void run()
{
try
{
DataInputStream dis = new DataInputStream(new BufferedInputStream(linkSocket.getInputStream()));
PrintStream ps = new PrintStream(new BufferedOutputStream(linkSocket.getOutputStream()));
ps.println("Hello! Wellcome connect to my server!");
ps.flush();//向Client端输出信息
inputLine = dis.readLine();//从Client读入信息
while(!inputLine.equals("Bye"))
{
System.out.println("Client端输入的信息为:"+inputLine);
inputLine = dis.readLine();
}
ps.close();
dis.close();
linkSocket.close();
}
catch (IOException e)
{
System.out.println("ServerException"+e);
}
}
}
___________________________________________________
___________________________________________________
//UDP服务器端程序UDPServer .java
import java.io.*;
import java.net.*;
class UDPServer
{
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String sentence = new String(receivePacket.getData());
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
serverSocket.send(sendPacket);
}
}
}
___________________________________________________
UDP客户端程序UDPClient.java
import java.io.*;
import java.net.*;
class UDPClient
{
public static void main(String args[]) throws Exception
{
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
// InetAddress IPAddress = InetAddress.getLocalHost("hostname");
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length,InetAddress.getLocalHost(), 9876);
clientSocket.send(sendPacket);
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
String modifiedSentence =
new String(receivePacket.getData());
System.out.println("FROM SERVER:" + modifiedSentence);
clientSocket.close();
}
}
___________________________________________________
___________________________________________________
//URLTest.java
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
public class URLTest
{ public static void main(String args[])
{ new NetWin();
}
}
class NetWin extends Frame
implements ActionListener,Runnable
{ Button button;
URL url;
TextField text;
TextArea area;
byte b[]=new byte[118];
Thread thread;
NetWin()
{ text=new TextField(20);
area=new TextArea(12,12);
button=new Button("确定");
button.addActionListener(this);
thread=new Thread(this);
Panel p=new Panel();
p.add(new Label("输入网址:"));
p.add(text);
p.add(button);
add(area,BorderLayout.CENTER);
add(p,BorderLayout.NORTH);
setBounds(60,60,360,300);
setVisible(true);
validate();
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e)
{
if(!(thread.isAlive()))
thread=new Thread(this);
try{
thread.start();
}
catch(Exception ee)
{ text.setText("我正在读取"+url);
}
}
public void run()
{ try { int n=-1;
area.setText(null);
url=new URL(text.getText().trim());
InputStream in=url.openStream();
while((n=in.read(b))!=-1)
{ String s=new String(b,0,n);
area.append(s);
}
}
catch(MalformedURLException e1)
{ text.setText(""+e1);
return;
}
catch(IOException e1)
{ text.setText(""+e1);
return;
}
}
}
___________________________________________________
___________________________________________________
//URLHtml.java
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import javax.swing.JEditorPane;
public class URLHtml
{ public static void main(String args[])
{ new Win();
}
}
class Win extends Frame
implements ActionListener,Runnable
{ Button button;
URL url;
TextField text;
JEditorPane editPane;
byte b[]=new byte[118];
Thread thread;
public Win()
{ text=new TextField(20);
editPane=new JEditorPane();
editPane.setEditable(false);
button=new Button("确定");
button.addActionListener(this);
thread=new Thread(this);
Panel p=new Panel();
p.add(new Label("输入网址:"));
p.add(text);
p.add(button);
ScrollPane scroll=new ScrollPane();
scroll.add(editPane);
add(scroll,BorderLayout.CENTER);
add(p,BorderLayout.NORTH);
setBounds(160,60,360,300);
setVisible(true);
validate();
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e)
{ if(!(thread.isAlive()))
thread=new Thread(this);
try{ thread.start();
}
catch(Exception ee)
{ text.setText("我正在读取"+url);
}
}
public void run()
{ try { int n=-1;
editPane.setText(null);
url=new URL(text.getText().trim());
editPane.setPage(url);
}
catch(Exception e1)
{ text.setText(""+e1);
return;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -