在进行网络编程的时候,需要先运行服务器程序,然后等待客户程序连接,因此需要在服务器程序中建立服务套接字,并等待客户程序的连接,本次将演示如何创建服务器套接字对象,实现客户端连接服务器。
1.实现创建服务器套接字和等待客户端连接的代码:
package com.zys.tcp;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class ServerSocketFrame extends JFrame{
private JTextArea textarea;
private JScrollPane scrollpane;
private ServerSocket server;
private Socket socket;
public ServerSocketFrame(){
super("服务端");
this.setBounds(400,200,400,300);
textarea=new JTextArea();
scrollpane=new JScrollPane(textarea);
this.add(scrollpane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void getServer(){
try {
server=new ServerSocket(1978);
textarea.append("服务器套接字已经创建成功\n");
while(true){
textarea.append("等待客户机的连接....\n");
socket=server.accept(); //等待客户端链接来实例化Socket对象
textarea.append("连接成功....\n");
}
} catch (Exception e) {
}
}
public static void main(String[] args) {
new ServerSocketFrame().getServer();
}
}
2.实现创建客户端套接字并与服务器连接:
package com.zys.tcp;
import java.net.Socket;
import java.util.MissingFormatArgumentException;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class ClientSocketFrame extends JFrame{
private JTextArea textarea;
private JScrollPane scrollpane;
private Socket socket;
private String ip="192.168.0.105";
public ClientSocketFrame(){
super("客户端");
this.setBounds(400,200,400,300);
textarea=new JTextArea();
scrollpane=new JScrollPane(textarea);
this.add(scrollpane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
private void connect(){
textarea.append("尝试连接......\n");
try {
socket=new Socket(ip,1978);
textarea.append("完成连接......\n");
} catch (Exception e) {
}
}
public static void main(String[] args) {
new ClientSocketFrame().connect();
new ClientSocketFrame().connect();
}
}
首先运行服务器程序,再运行客户端程序, 运行结果如图所示:
注意事项:
1.服务器的端口使用大于1024的端口号,因为0~1024的端口被一些特殊的协议和服务所占据
2.首先运行服务器程序,然后再运行客户端
3.在使用Socket类创建客户端套接字时,所指定IP地址和端口号一定要和服务器相同,否则不能连接到服务器
4.SeverSocket类的构造方法可以创建绑定到指定端口的服务器套接字对象
5.ServerSocket类的accept()方法可以监听客户端的链接,并且返回一个套接字对象
6.Socket类的构造方法可以创建到指定服务器和端口的套接字对象,从而实现与服务器的链接