编程
数据发送的过程:
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通信就完成了。