socket用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。
java中当连接到一个套接字时,当前线程对被阻塞,直到建立连接或者超时为止。同样,当通过套接字读写数据时,当前线程也会被阻塞,直到操作成功或者超时。
本例:Client与Server之间的通信。
服务器端:
import java.io.IOException; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class EchoServer { private Scanner in; //服务器从客户端读入的流 private PrintWriter out; //服务器从客户端输出的流 private Scanner input; //从键盘中读取的数据 private boolean stop=false; public EchoServer(ServerSocket server) throws IOException{ Socket s=server.accept(); System.out.println("有一位客户端连接到服务器"); in=new Scanner(s.getInputStream()); out=new PrintWriter(s.getOutputStream()); input=new Scanner(System.in); out.println("连接服务器成功,输入BYE结束"); out.flush(); startRead(); //开启不断从客户端读取的进程 startWrite(); //开启不断向客户端写的进程 } private void startRead() { new Thread(new Runnable(){ @Override public void run() { while(!stop&&in.hasNextLine()){ String line=in.nextLine(); System.out.println("Client:"+line); if(line.equals("BYE")) stop=true; } } }).start(); } private void startWrite() { new Thread(new Runnable(){ @Override public void run() { while(!stop&&input.hasNextLine()){ String line=input.nextLine(); out.println(line); out.flush(); if(line.equals("BYE")) stop=true; } } }).start(); } }
import java.io.IOException; import java.net.ServerSocket; public class ServerSocketTest { public static void main(String[] args) throws IOException { ServerSocket server=new ServerSocket(8808); new EchoServer(server); } }
客户端程序:
import java.io.IOException; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class Client { private Socket s; private Scanner in; //客户端从服务器读入的流 private PrintWriter out; //客户端向服务器输出的流 private Scanner input; //从键盘中读取的数据 private boolean stop=false; public Client(int port) throws UnknownHostException, IOException{ s=new Socket("127.0.0.1",port); in=new Scanner(s.getInputStream()); out=new PrintWriter(s.getOutputStream()); input=new Scanner(System.in); startRead(); //开启不断从服务器读取的进程 startWrite(); //开启不断向服务器写的进程 } private void startRead() { new Thread(new Runnable(){ @Override public void run() { while(!stop&&in.hasNextLine()){ String line=in.nextLine(); System.out.println("Server:"+line); if(line.equals("BYE")) stop=true; } } }).start(); } private void startWrite() { new Thread(new Runnable(){ @Override public void run() { while(!stop&&input.hasNextLine()){ String line=input.nextLine(); out.println(line); out.flush(); if(line.equals("BYE")) stop=true; } } }).start(); } }
import java.io.IOException; import java.net.UnknownHostException; public class ClientTest { public static void main(String[] args) throws UnknownHostException, IOException{ new Client(8808); } }
运行结果(服务器端先运行):
服务器端:
有一位客户端连接到服务器
Client:你好
你好 我是服务器
你是谁
Client:我是客户端
Client:BYE
BYE
客户端:
Server:连接服务器成功,输入BYE结束
你好
Server:你好 我是服务器
Server:你是谁
我是客户端
BYE
Server:BYE
相关推荐
基于Qt实现局域网Socket通信系统源码。分别有服务端(Server)和客户端(Client) 服务端默认监听本机IP的6666端口 本人实测在linux(需防火墙开启端口)和windows下完美运行。基于Qt实现局域网Socket通信系统源码。...
windows下socket通信代码,带注释,适合初学者;包含客户端和服务器两个文件
socket通信库,c++编写,只需调用几个函数即可完成socket通信过程。简单易用,C#等其他语言可调用.问题沟通可发送邮件至gaocongly@126.com
c语言下进行socket通信
基于Qt实现的TCP socket通信,这是我学习qt socket通信自己写的一个小例子,希望对你有所帮助。整个文件包括服务端和客户端工程代码,具有如下功能: 1. 服务端支持多个客户端与之连接; 2. 服务端支持客户端...
socket通信文件传输 socket通信文件传输 socket通信文件传输 socket通信文件传输
linux C语言 socket通信聊天小程序
什么是socket通信? TCP/IP协议是传输层协议,主要解决数据如何在网络中传输。HTTP是应用层协议,主要解决如何包装数据。 Socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的...
Android socket通信聊天,客户端+服务端
C#做服务器,Android做客户端,实现Socket通信
基于C#开放式TCP通信建立与西门子PLC的socket通信示例
Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信Socket通信
文件传输 聊天 socket通信 文件传输 聊天 socket通信 文件传输 聊天 socket通信
C#实现的简单Socket通信。以及AES加密。
一款C#开发的稳定完整版的Socket通信应用实例
这是android socket通信的实例程序,具体请参考: http://blog.csdn.net/htttw/article/details/7574372
matlab环境下socket通信 。网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
2个窗口分别模拟服务器端和客户端,基于TCP协议的socket通信,实现互相通信
socket通信代码,包括服务端和客户端程序,服务端和客户端能实现通信
C# Socket通信(winform) 异步发送消息,服务端客户端通信,可以发送消息和文件并进行接收,代码注释详细 C# Socket通信(winform) 异步发送消息,服务端客户端通信,可以发送消息和文件并进行接收,代码注释详细 ...