工作原理:
1.服务器程序创建一个ServerSocket,然后调用accept方法等待客户来连接。
2.客户端程序创建一个Socket并请求与服务器建立连接。
3.服务器接受客户端的链接请求,并建立一个新的Socket与该客户建立连接。
4.建立连接的两个Socket在一个单独的线程(由服务器程序创建)上对话。
5.服务器开始等待新的链接请求,当新的连接请求到达时,重复步骤2到5的过程。
ServerSocket构造函数:
public ServerSocket()
public ServerSocket(int port)
public ServerSocket(int port,int backlog)连接数
public ServerSocket(int port,int backlog,InetAddress bindAddr)ip地址
close()关闭
accept()等待客户端请求
Socket构造函数:
public Socket()
public Socket(String host,intport)
public Socket(InetAddress address,intport)
getInputStream()和getOutputStream()
telnet测试服务器 telnet ip port
netstat -na命令测试TCP正在使用的端口。
eg:
import java.net.*;
import java.io.*;
public class TcpServer
{
public static void main(String[] args)
{
try
{
ServerSocket ss=new ServerSocket(8001);
Socket s=ss.accept();
InputStream in=s.getInputStream();
OutputStream out=s.getOutputStream();
out.write("hello client!".getBytes());
byte[] b=new byte[1024];
int len=in.read(b);
System.out.println(new String(b,0,len));
in.close();
out.close();
s.close();
ss.close();
}catch(Exception e){ }
}
}
包装流:
InputStream in=socket.getInputStream();
OutputStream out=socket.getOutputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(in));
System.out.println(br.readLine());//从服务器上读取数据
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
String keyword=bf.readLine();//从键盘上读出
PrintWriter pw=new PrintWriter(out);
pw.println(keyword);//发送到服务器端
对象流:
ObjectOutputStream oos=new ObjectOutputStream(out);
oos.writeObject(对象);
ObjectInputStream ois=new ObjectInputStream(in);
类 对象=(类型转换)ois.readObject();
URL(Uniform Resource Locator)
组成:协议、主机名、端口号、资源名。http://www.it315.org:8080/index.html
构造函数:
public URL(String spec)
public URL(String protocol,String host,int port,String file)
public URL(String protocol,String host,int port,String file,URLStreamHancller handler)
public URL(URL context,String spec)
方法:
getProtocol getHost getPort getFile
openConnection方法返回URLConnection
import java.net.*;
import java.io.*;
public class GetGoogle
{
public statc void main(String[] args)
{
public static void getContenByLanguage(String country)
{
URL urlGoogle=new URL("http://www.google.com");