Socket编程要点及方法
- 格式:doc
- 大小:32.00 KB
- 文档页数:3
Socket编程要点及方法
1)建立网络连接:
ServerSocket类用来在服务器中创建对象监听指定的端口号(大于1024)。例如:
ServerSocket server=new ServerSocket(5678);
用ServerSocket类中的accept()方法在服务器中产生“阻塞”,等待客户端的连接并且返回这个客户端的Socket对象。例如:
Socket client=server.accept();
用Socket类的构造方法在客户端中向服务器发出请求并建立网络连接。例如:
Socket client=new Socket(“192.168.0.2”,5678);
在连接成功时,服务器和客户端都会产生一个Socket对象,Socket的getInputStream()方法可以返回一个InputStream对象,可以利用这个对象建立数据输入流对象,数据输入流对象用来接收数据。Socket的getOutputStream()方法可以返回一个OutputStream对象,可以利用这个对象建立数据输出流对象,数据输出流对象用来发送数据。
2)创建数据输入流对象和数据输出流对象
DataInputStream和DataOutputStream是java.io包中实现字节数据流传输的类,运用在网络、I/O和文件等方面的数据流传输。
服务器和客户端两面都需要创建数据输入流对象和数据输出流对象。例如:
DataOutputStream sender=new DataOutputStream(client.getOutputStream());
DataInputStream receiver=new DataInputStream(client.getInputStream());
可以利用数据输入流对象和数据输出流对象进行会话。
3)会话:
用DataOutputStream类的writeUTF(String str)方法使用字符的 UTF-8 格式输出字符串的每个字符。DataInputStream类的String readUTF()方法从数据输入流中读取用 UTF-8 格式编码的 Unicode 字符格式的字符串,然后返回这个字符串。例如:
发送数据:
sender.writeUTF(“hello Client”);
接收数据:
while(true){ //需要等待
String readClient=receiver.readUTF();
}
1. Java Socket编程实例
1)服务器程序
//Java Socket编程实例_服务器程序
import .*;
import java.io.*;
public class Server{
Server(){
try{
//使用server对象监听指定的端口号(大于1024)。
ServerSocket server=new ServerSocket(5678);
int i=0;//计客户端的访问次数
while(true){
//等待接受到一个客户端的连接并且返回这个客户端的Socket对象。 Socket client=server.accept();
i++;
//建立和启动线程并将客户端的Socket对象作为参数传递给线程。
ServerThread clientThread=new ClientThread(client,i);
clientThread.start();
}
}catch(Exception e){e.printStackTrace();}
}
public static void main(String args[]) throws Exception{
new Server();
}
}
class ClientThread extends Thread{
Socket client;
int i;
ServerThread(Socket client,int i){
//接受 从Server类传来的参数client和i
this.client=client;
this.i=i;
}
public void run(){
try{
/建立输入和输出数据流连接对象(send和receive)。
DataOutputStream send=new DataOutputStream(client.getOutputStream());
DataInputStream receive=new DataInputStream(client.getInputStream());
//进行会话(发送数据和接受数据)。
send.writeUTF("HELLO,CLIENT"+i);
//接受并显示数据。
while(true){
String readClient=receive.readUTF();
System.out.println(readClient);
}
}catch(Exception e){e.printStackTrace();}
}
}
2)客户端程序
//Java Socket编程实例_客户端程序
import java.io.*;
import .*;
public class Client{
Client(){
try{
//向服务器发出请求并建立网络连接.
Socket client = new Socket("127.0.0.1",5678); //创建数据输入流对象和数据输出流对象.
DataInputStream in=new DataInputStream(client.getInputStream());
DataOutputStream out=new DataOutputStream(client.getOutputStream());
//向服务器发送数据
out.writeUTF("hello Server");
//接收服务器发来的数据:
while(true){
String readServer=in.readUTF();
System.out.println(readServer);
out.writeUTF("Thanks Server");
if(readServer.equals("Thanks Client"))break;}
}catch(Exception e){e.printStackTrace();}
}
public static void main(String[] args) throws Exception{
new Client();
}
}