package com.mytest.socket; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class SocketSevice { //侦听端口 private int port; private ServerSocket serverSocket; //最大连接 private static int maxCount=3; //连接数量累计 private int index=0; private static SocketSevice socketSevice=new SocketSevice(); //任务线程池 private ExecutorService threadPool=Executors.newFixedThreadPool(maxCount); private SocketSevice(){} public static SocketSevice getInstance() { return socketSevice; } public void listening(int port) throws IOException { this.port=port; serverSocket=new ServerSocket(port); //使用accept()阻塞等待客户请求,有客户请求到来则产生一个Socket对象,并继续执行 while(true){ Socket socket=serverSocket.accept(); SocketTask task=new SocketTask(socket,"任务"+index); threadPool.execute(task); index++; } } public void shutdown() throws IOException { if(threadPool.isTerminated()){ threadPool.shutdown(); serverSocket.close(); } } public static void main(String[] args) { SocketSevice s=SocketSevice.getInstance(); try { s.listening(1099); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public int getPort() { return port; } public void setPort(int port) { this.port = port; } }
package com.mytest.socket; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.Socket; public class SocketTask implements Runnable{ private Socket socket; private String name; public SocketTask(Socket socket,String name) { this.socket=socket; this.name=name; System.out.println("["+name+"]"+"开始....."); } @Override public void run() { BufferedReader br =null; BufferedWriter bw=null; try { br=new BufferedReader(new InputStreamReader(socket.getInputStream())); String msg= br.readLine(); bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); System.out.println("["+name+"]"+"接收数据>>"+msg); String str = "当前处理["+msg+"]"; bw.write(str); bw.flush(); System.out.println("推送["+name+"]应答信息\n"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { try { if(br!=null) { br.close(); } if(bw!=null) { bw.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
package com.mytest.socket; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; public class SocketClient { private int remotePort; private String remoteIp; private Socket socket; public SocketClient(String remoteIp,int remotePort) throws IOException { this.remoteIp=remoteIp; this.remotePort=remotePort; socket=new Socket(remoteIp,remotePort); System.out.println("连接 : "+remoteIp+" : "+remotePort); } public void close() throws IOException { socket.close(); System.out.println(" ----关闭连接 ----\n"); } public void writeString(String str) throws IOException { //构建IO流 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); bw.write(str); //当接收的类使用的是BufferedReader,发送的类是BufferedWriter的时候,要注意发送的一行要有换行标识符才能正确写入 bw.newLine(); //刷新缓冲区才能真正写入 bw.flush(); System.out.println("传送数据: "+str); //读取服务器返回的消息数据 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String callbrk=br.readLine(); System.out.println(socket.getInetAddress().getLocalHost()+":"+socket.getPort()+">>"+callbrk); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { for(int i=0;i<5;i++){ SocketClient client=new SocketClient("127.0.0.1",1099); client.writeString("哈哈哈"+i); client.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
您还没有登录,请您登录后再发表评论
总的来说,Socket输入输出服务器程序涉及到网络编程的基本概念,包括服务器的监听与接受连接,客户端的连接请求,以及基于Socket的双向数据传输。通过深入理解和实践这样的程序,开发者可以构建更复杂的网络应用,如...
这份"Socket网络编程学习笔记"涵盖了从基础概念到高级技术的全面知识,对于初学者来说是一份非常有价值的参考资料。以下是对这份笔记内容的详细解读: 1. **Socket基本概念**:Socket在计算机网络中扮演着桥梁的...
以下是对Socket学习笔记的详细解释: 1. **Socket构造方法**: - `Socket()`:创建一个未连接的Socket对象。 - `Socket(InetAddress address, int port)`:创建一个Socket并连接到指定的IP地址和端口。 - `...
Socket编程是计算机网络通信中的重要概念,主要用于实现进程间的网络通信。在本示例中,我们探讨的是如何使用...通过"TestSocket"这个例子,你可以更深入地学习如何在实际项目中运用Socket,从而实现跨网络的高效通信。
本学习笔记将带你深入理解这一领域,特别是通过Socket接口进行的网络通信。Socket是操作系统提供的一种通信机制,它允许应用程序创建并管理网络连接,进行数据传输。 **TCP/IP协议族** TCP/IP(Transmission ...
注意,关闭Socket会关闭其对应的输入输出流,所以不必单独关闭。 在实际的Android应用中,为了提高用户体验,我们可能会在不同的线程中处理Socket连接和数据传输,避免阻塞UI线程。这通常通过创建一个`AsyncTask`...
在IT行业中,网络通信是软件开发的一个重要领域,特别是在分布式系统和互联网应用中...在提供的压缩包文件中,可能包含了实现这些功能的示例代码,通过学习和分析这些代码,开发者可以加深对C# Socket双向通信的理解。
适合新手学习的网络socket编程笔记,内容详细简单明了。
- 通过`Socket`对象的`getInputStream()`和`getOutputStream()`方法获取输入输出流。 - 在输入输出流上读写数据。 - 关闭资源。 - 客户端的步骤: - 创建`Socket`对象,指定服务器的IP和端口。 - 获取`Socket...
在IT行业中,网络通信是软件开发的一个重要领域,特别是在分布式系统和实时数据交换的应用中。...在这个例子中,我们看到了如何使用C#实现基本的Socket通信,这对于学习网络编程和理解网络通信机制是非常有价值的。
客户端(Socket_Client)则需要连接到服务器,建立Socket连接,并通过输入输出流进行数据交互: ```java Socket socket = new Socket("localhost", 8888); OutputStream outputStream = socket.getOutputStream(); ...
本资源包含了Socket学习笔记和课件,适合对网络编程感兴趣的初学者或希望深入理解Socket技术的学习者。 首先,我们需要了解Socket的基本概念。Socket是操作系统提供的一个接口,它允许应用程序通过这个接口发送和...
Perl Socket 编程笔记 Perl Socket 编程笔记是 Perl 语言中 Socket 编程的使用方法和示例程序的集合,适合初学者。下面是 Perl Socket 编程的详细说明: 一、使用 Perl Socket API 首先需要载入 Socket 模块,即 ...
本文将深入探讨“Socket学习笔记”中的核心知识点,主要通过分析提供的两个Java文件——SocketServer.java和SocketClient.java来阐述。 首先,Socket在计算机网络中扮演着客户端与服务器端通信的关键角色。它是一种...
- TCP Socket编程主要涉及三次握手建立连接、四次挥手断开连接的过程。在C# Socket基本编程示例中,你可以看到如何创建ServerSocket监听客户端连接,以及ClientSocket如何发起连接请求。 - 流式Socket通信通常是...
通信完成后,记得关闭Socket以及相关的输入输出流和ServerSocket,避免资源浪费。例如: ```java input.close(); output.close(); socket.close(); if (serverSocket != null) { serverSocket.close(); } ``` 在...
相关推荐
总的来说,Socket输入输出服务器程序涉及到网络编程的基本概念,包括服务器的监听与接受连接,客户端的连接请求,以及基于Socket的双向数据传输。通过深入理解和实践这样的程序,开发者可以构建更复杂的网络应用,如...
这份"Socket网络编程学习笔记"涵盖了从基础概念到高级技术的全面知识,对于初学者来说是一份非常有价值的参考资料。以下是对这份笔记内容的详细解读: 1. **Socket基本概念**:Socket在计算机网络中扮演着桥梁的...
以下是对Socket学习笔记的详细解释: 1. **Socket构造方法**: - `Socket()`:创建一个未连接的Socket对象。 - `Socket(InetAddress address, int port)`:创建一个Socket并连接到指定的IP地址和端口。 - `...
Socket编程是计算机网络通信中的重要概念,主要用于实现进程间的网络通信。在本示例中,我们探讨的是如何使用...通过"TestSocket"这个例子,你可以更深入地学习如何在实际项目中运用Socket,从而实现跨网络的高效通信。
本学习笔记将带你深入理解这一领域,特别是通过Socket接口进行的网络通信。Socket是操作系统提供的一种通信机制,它允许应用程序创建并管理网络连接,进行数据传输。 **TCP/IP协议族** TCP/IP(Transmission ...
注意,关闭Socket会关闭其对应的输入输出流,所以不必单独关闭。 在实际的Android应用中,为了提高用户体验,我们可能会在不同的线程中处理Socket连接和数据传输,避免阻塞UI线程。这通常通过创建一个`AsyncTask`...
在IT行业中,网络通信是软件开发的一个重要领域,特别是在分布式系统和互联网应用中...在提供的压缩包文件中,可能包含了实现这些功能的示例代码,通过学习和分析这些代码,开发者可以加深对C# Socket双向通信的理解。
适合新手学习的网络socket编程笔记,内容详细简单明了。
- 通过`Socket`对象的`getInputStream()`和`getOutputStream()`方法获取输入输出流。 - 在输入输出流上读写数据。 - 关闭资源。 - 客户端的步骤: - 创建`Socket`对象,指定服务器的IP和端口。 - 获取`Socket...
在IT行业中,网络通信是软件开发的一个重要领域,特别是在分布式系统和实时数据交换的应用中。...在这个例子中,我们看到了如何使用C#实现基本的Socket通信,这对于学习网络编程和理解网络通信机制是非常有价值的。
客户端(Socket_Client)则需要连接到服务器,建立Socket连接,并通过输入输出流进行数据交互: ```java Socket socket = new Socket("localhost", 8888); OutputStream outputStream = socket.getOutputStream(); ...
本资源包含了Socket学习笔记和课件,适合对网络编程感兴趣的初学者或希望深入理解Socket技术的学习者。 首先,我们需要了解Socket的基本概念。Socket是操作系统提供的一个接口,它允许应用程序通过这个接口发送和...
Perl Socket 编程笔记 Perl Socket 编程笔记是 Perl 语言中 Socket 编程的使用方法和示例程序的集合,适合初学者。下面是 Perl Socket 编程的详细说明: 一、使用 Perl Socket API 首先需要载入 Socket 模块,即 ...
本文将深入探讨“Socket学习笔记”中的核心知识点,主要通过分析提供的两个Java文件——SocketServer.java和SocketClient.java来阐述。 首先,Socket在计算机网络中扮演着客户端与服务器端通信的关键角色。它是一种...
- TCP Socket编程主要涉及三次握手建立连接、四次挥手断开连接的过程。在C# Socket基本编程示例中,你可以看到如何创建ServerSocket监听客户端连接,以及ClientSocket如何发起连接请求。 - 流式Socket通信通常是...
通信完成后,记得关闭Socket以及相关的输入输出流和ServerSocket,避免资源浪费。例如: ```java input.close(); output.close(); socket.close(); if (serverSocket != null) { serverSocket.close(); } ``` 在...