编程

数据发送的过程:

1:产生Socket;

2:调用bind的信息,通知给驱动程序

3:应用程序将要发送的数据传送给Socket

4: 驱动从Socket 取出数据,并通过网卡发送出去

数据的接收过程:

1:产生Socket;

2:调用bind的信息,通知给驱动程序

3:驱动程序根据从网卡传送的数据报中的指定目标端口号,将处理后的传所迷惑到相应的Socket中

4:应用程序从Socket中取出数据

IO流实现的

往Socket中写入数据的时候使用OutPutStream。读取Socket的数据时使用InputStream。

实现服务器端与客户端程序:

服务器端:

public classServerSocket :此类实现服务器套接字。服务器套接字等待请求通过网络传入。

ServerSocket (int port): 创建绑定到特定端口的服务器套接字

void setTimOut (int timeout):通过指定超时值(毫秒为单位)

IntentAdress getIntentAdress():返回次服务器套接字的本地地址

Socket accept ():侦听并接受到此套接字的连接

客户端:

public class Socket  :此类实现客户端套接字。

Socket (String host ,int port):创建一个流套接字并将其连接到指定主机上的指定端口号、

InputStream getInputStream ():返回套接字的输入流

OutPutStream getOutPutStream():返回此套接字的输出流。

服务器端实现过程:

public static void
try
//创建一个服务器端的Socket
ServerSocket server = new
System.out.println("服务器已启动,正在等待连接中。。。。");
Socket s=server.accept();//等待客户端连接,会阻塞
String info = "hello ,serviceClient \n";
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
s.getOutputStream();//得到输出流
bw.write(info);
bw.close();
} catch
e.printStackTrace();
}
}

客户端代码:

public static void
try
//创建一个客户端的Socket对象(主机名。端口号)
Socket socket = new Socket("localhost", 8888);
System.out.println("与服务器连接成功");
BufferedReader  br = new BufferedReader(new
String info = br.readLine(); 
System.out.println(info);
br.close();
 
} catch
e.printStackTrace();
} catch
e.printStackTrace();
}
}

在启动的时候,先启动服务器端,然后启动客户端程序即可。这样一个简单地Socket通信就完成了。