一个简单的socket DEMO
2016-10-19 14:57
375 查看
socket是一种比较流行的网络编程方式,由于工作中用到了局域网通信,简单了解了一下socket通信的实现过程。
既然是通信,则至少存在两个进程,而且必须包括一个建立服务的进程,即建立socket服务端;这个服务端规定了服务的端口,以供所有的客户端连接。可以把socket比作听一场讲座:场地工作人员相当于服务端,观众相当于客户端,场地工作人员规定观众只能从东南口进入(服务端规定所有的socket通信只能通过60000端口),观众从东南口进来后即可看见演讲人,可以与其进行交流(客户端通过60000端口链接服务端,实现交互通信)。大致就是这个流程。话不多说,上代码。
服务端:
建立服务:EchoS.java
public class EchoS {
private ServerSocket serverSocket;
public EchoS(){
try {
serverSocket= new ServerSocket(60000);
} catch (IOException e) {
e.printStackTrace();
}
}
public void Server(){
try {
Socket socket = serverSocket.accept();
System.out.println("client:" + socket.getInetAddress() + ":" +
socket.getLocalPort());
BufferedReader br = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
PrintWriter pw = new
PrintWriter(socket.getOutputStream(), true);
String linestr;
while ((linestr = br.readLine()) != null) {
System.out.println(linestr);
pw.println("--->" +
linestr);
}
} catch (IOException e) {
System.out.println("连接断开:(");
e.printStackTrace();
}
}
}
启动服务:SocketServer.java
public class SocketServer {
public static void main(String[] args)
{
new
EchoS().Server();
}
}
客户端:
配置连接属性:EchoC.java
public class EchoC {
private Socket socket;
public EchoC(){
try {
socket = new Socket("localhost",60000);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void Client(){
try {
BufferedReader br = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
PrintWriter pw = new
PrintWriter(socket.getOutputStream(), true);
BufferedReader lbr = new BufferedReader(new
InputStreamReader(System.in));
String
linestr = null;
while
((linestr = lbr.readLine()) != null) {
pw.println(linestr);
System.out.println(br.readLine());
if (linestr.equals("bye#")) {
break;
}
}
} catch (IOException e)
{
e.printStackTrace();
}
}
}
启动连接:SocketClient.java
public class SocketClient {
public static void main(String[] args) {
new
EchoC().Client();
}
}
分别启动服务和连接后,测试
既然是通信,则至少存在两个进程,而且必须包括一个建立服务的进程,即建立socket服务端;这个服务端规定了服务的端口,以供所有的客户端连接。可以把socket比作听一场讲座:场地工作人员相当于服务端,观众相当于客户端,场地工作人员规定观众只能从东南口进入(服务端规定所有的socket通信只能通过60000端口),观众从东南口进来后即可看见演讲人,可以与其进行交流(客户端通过60000端口链接服务端,实现交互通信)。大致就是这个流程。话不多说,上代码。
服务端:
建立服务:EchoS.java
public class EchoS {
private ServerSocket serverSocket;
public EchoS(){
try {
serverSocket= new ServerSocket(60000);
} catch (IOException e) {
e.printStackTrace();
}
}
public void Server(){
try {
Socket socket = serverSocket.accept();
System.out.println("client:" + socket.getInetAddress() + ":" +
socket.getLocalPort());
BufferedReader br = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
PrintWriter pw = new
PrintWriter(socket.getOutputStream(), true);
String linestr;
while ((linestr = br.readLine()) != null) {
System.out.println(linestr);
pw.println("--->" +
linestr);
}
} catch (IOException e) {
System.out.println("连接断开:(");
e.printStackTrace();
}
}
}
启动服务:SocketServer.java
public class SocketServer {
public static void main(String[] args)
{
new
EchoS().Server();
}
}
客户端:
配置连接属性:EchoC.java
public class EchoC {
private Socket socket;
public EchoC(){
try {
socket = new Socket("localhost",60000);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void Client(){
try {
BufferedReader br = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
PrintWriter pw = new
PrintWriter(socket.getOutputStream(), true);
BufferedReader lbr = new BufferedReader(new
InputStreamReader(System.in));
String
linestr = null;
while
((linestr = lbr.readLine()) != null) {
pw.println(linestr);
System.out.println(br.readLine());
if (linestr.equals("bye#")) {
break;
}
}
} catch (IOException e)
{
e.printStackTrace();
}
}
}
启动连接:SocketClient.java
public class SocketClient {
public static void main(String[] args) {
new
EchoC().Client();
}
}
分别启动服务和连接后,测试
相关文章推荐
- vb2008 socket简单数据收发
- 一个简单的socket服务端Demo
- 一个简单的XML Schema的例子
- 一个简单地socket通讯Demo
- 一个简单的Socket通信Demo
- Mobile Web App一个页面的简单的东…
- c# 一个简单的加密解密算法
- 一个简单的图片拖拽排序效果   -----   JQUERY特效模板
- PHP Socket 编程简单实例
- C#:C# 以前的一个简单的记事…
- 一个简单的PHP&MYSQL留言板源码第1/2页
- 一个简单的"Hello World"
- 一个关于linux socket的简单例子
- 一个简单的C/S结构的通信类CServerSocket
- Socket 同步编程的一个简单例子,适合初学者
- 一个简单的socket客户端发送消息到服务器端程序
- 一个Socket网络编程的简单例子
- 简单的问题,用类创建一个对象error C2380: type(s) preceding 'Complex' (constructor with return type, or illegal redefinition of current class-n
- 一个简单的双击编辑表格单元格,更新数据表的demo。
- 基于tcp/ip协议的Socket网络通讯 --> 简单的数据传送和库构造