【1】服务器端 ServerSocket:
编写TCP网络服务程序,首先要用到java.net.ServerSocket类用以创建服务器Socket.它的常用构造方法有:
1, ServerSocket(int port):创建绑定到特定端口的服务器套接字。
2, ServerSocket(int port, int backlog):利用指定的backlog(服务器忙时保持连接请求的等待客户数量),创建服务器套接字并将其绑定到指定的本地端口号。
3, ServerSocket(int port, int backlog, InetAddress bindAddr):使用指定的端口、侦听 backlog 和要绑定到的本地 IP 地址创建服务器。
【2】客户端 Socket:
客户端要与服务器建立连接,必须先创建一个Socket对象,它的常用构造方法有:
1,Socket(String host, int port):创建一个流套接字并将其连接到指定主机上的指定端口号。
2,Socket(InetAddress address, int port):创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
3,Socket(InetAddress address, int port, InetAddress localAddr, int localPort):创建一个套接字并将其连接到指定远程端口上的指定远程地址。
4,Socket(String host, int port, InetAddress localAddr, int localPort):创建一个套接字并将其连接到指定远程主机上的指定远程端口。
对于通常情况的应用,使用第1个构造方法来创建客户端的Socket对象,并与服务器建立连接,是非常简单和方便的.
服务器端程序调用ServerSocket.accept方法等待客户端的连接请求,一旦accept接收了客户端连接请求,该方法返回一个与该客户端建立了专线连接的Socket对象,不用程序去创建这个Socket对象.建立了连接的两个Socket是以IO流的方式进行数据交换的,Java提供了Socket.getInputStream返回Socket的输入流对象,Socket.getOutputStream返回Socket的输出流对象.
【3】服务器端代码
package com.farsight.bj15091;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServerDemon {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(10000);
System.out.println("服务器启动....");
Socket s = server.accept();
System.out.println("客户端连接成功...");
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String line = null;
while(true){
line = br.readLine();
System.out.println("客户端消息:" + line);
if(line.equals("quit")){
break;
}
}
br.close();
s.close();
server.close();
}
}
【4】客户端代码
package com.farsight.bj15091;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class TcpClientDemon {
public static void main(String[] args) throws IOException {
Socket s = new Socket("192.168.4.251", 10000);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line = null;
System.out.print("请输入:");
while((line = br.readLine()) != null){
bw.write(line);
bw.newLine();
bw.flush();
if(line.equals("quit")){
break;
}
}
br.close();
bw.close();
s.close();
}
}