`

Socket一

    博客分类:
  • J2SE
阅读更多
package com.itown.hbportal.common.process.test;

import java.net.*;
import java.io.*;
import java.lang.*;
import java.net.*;
import java.io.*;

//实现Client端功能的ClientApp.java原文件:
public class ClientApp {
public static void main(String args[]) {
try {
// 创建通讯并且和主机Rock连接
Socket cSocket = new Socket("192.168.100.188", 8018);
// 打开这个Socket的输入/输出流
OutputStream os = cSocket.getOutputStream();
DataInputStream is = new DataInputStream(cSocket.getInputStream());
int c;
boolean flag = true;
String responseline;
while (flag) {
// 从标准输入输出接受字符并且写如系统
while ((c = System.in.read()) != -1) {
os.write((byte) c);
if (c == '\n') {
os.flush();
//将程序阻塞,直到回答信息被收到后将他们在标准输出上显示出来
responseline = is.readLine();
System.out.println("Message is:" + responseline);
}
}
}
os.close();
is.close();
cSocket.close();
} catch (Exception e) {
System.out.println("Exception :" + e.getMessage());
}
}
}

// 实现Server端功能的ServerApp.java原文件:
class ServerApp {
public static void main(String args[]) {
try {
boolean flag = true;
Socket clientSocket = null;
String inputLine;
int c;
ServerSocket sSocket = new ServerSocket(8018);
System.out.println("Server listen on:" + sSocket.getLocalPort());
while (flag) {
clientSocket = sSocket.accept();
DataInputStream is = new DataInputStream(new BufferedInputStream(clientSocket.getInputStream()));
OutputStream os = clientSocket.getOutputStream();
while ((inputLine = is.readLine()) != null) {
// 当客户端输入stop的时候服务器程序运行终止!
if (inputLine.equals("stop")) {
flag = false;
break;
} else {
System.out.println(inputLine);
while ((c = System.in.read()) != -1) {
os.write((byte) c);
if (c == '\n') {
os.flush(); // 将信息发送到客户端
break;
}
}
}
}
is.close();
os.close();
clientSocket.close();
}
sSocket.close();
} catch (Exception e) {
System.out.println("Exception :" + e.getMessage());
}
}
}

Socket多线程应该是:
服务器端处于等待状态,当有客户端请求时专门开启一个线程为其服务,当此访问结束则该线程关闭;

使用场景:
1、JAVA 与 QQ 网络通讯实例;java调用腾讯通通讯的应用。
2、聊天室应用。

用以下方法可以较好的解决Socket性能和对Web应用的影响:
1、试试nio包吧SocketChanel,效率高一些,也不容易在高并发情况下影响稳定性,不过nio是基于缓存的,容易造成数据包异常,要做一些处理。
2、在web应用外面独立编写一个Socket应用,web通过和这个应用通讯完成原来写在页面的通讯代码,这样不容易因为网络问题造成意外影响。
3、如果如你所说,是一个不断的长连接,可以在tomcat或应用启动的时候就建立一些连接,并定期检查连接状态,或定期重新连接,周期不要太短。web中所有的socket通讯都由这个连接完成。
分享到:
评论

相关推荐

    socket 一个服务器对应多个客户端使用多线程

    1. **创建Socket**:调用`socket()`函数创建一个Socket描述符,指定协议类型(如TCP,即面向连接的传输层协议)和地址族(如AF_INET,表示IPv4)。 2. **绑定Socket**:使用`bind()`函数将Socket绑定到一个特定的IP...

    VB SOCKET一对多通讯 客户端和服务端程序源码

    【程序老媛出品,必属精品...资源名:VB SOCKET一对多通讯 客户端和服务端程序源码 资源类型:程序源代码 源码说明: 基于VB编写的socket 一对多通信实例源码 包含客户端和服务端 适合人群:新手及有一定经验的开发人员

    socket一对多端口转发源码

    在这个“socket一对多端口转发源码”中,核心逻辑应该是这样的: 1. **创建ServerSocket实例**:程序首先会创建一个`ServerSocket`对象,绑定到本地的特定端口,开始监听。这个端口就是数据进入的入口。 2. **接受...

    socket一个简单的程序

    在这个名为"socket一个简单的程序"的示例中,我们将会探讨如何构建一个基础的客户端和服务端模型,这对于理解Socket工作原理及其在实际开发中的应用至关重要。 首先,让我们了解什么是Socket。Socket,即套接字,是...

    Socket一对一,一对多多线程

    本文将深入探讨“Socket一对一”和“Socket一对多”多线程应用,并结合Java IO流的使用,来理解如何构建这样的系统。 首先,让我们了解Socket的基本概念。Socket,也被称为套接字,是网络编程中的一个接口,它允许...

    利用socket连续发送与连续接收数据

    在IT领域,网络编程是不可或缺的一部分,而Socket编程则是实现网络通信的基础。本文将深入探讨如何利用Socket进行连续发送与连续接收数据,基于标题“利用socket连续发送与连续接收数据”以及描述中提到的实现过程。...

    Qt下UDPSocket一段时间后接收不到数据的问题

    Qt下UDPSocket一段时间后接收不到数据的问题

    Java应用Socket通讯一对多

    Java应用Socket通讯一对多: ⑴、一对多; ⑵、通过list/map存储连接的socket对象,服务端向所有客户端群发消息,可以修改为服务端向指定客户端发送消息; ⑶、自动定时扫描客户端,移除断开的连接。

    HPSocket.Net-develop_hpsocket.net_HPSocket_.net_socket_tcp_

    1. 创建Socket对象:`Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);` 2. 连接服务器:`socket.Connect(new IPEndPoint(IPAddress.Parse("服务器IP"), 端口号));` ...

    SocketTool socket工具

    1. **连接与监听**:SocketTool允许用户设置服务器端的监听套接字,用于接收客户端的连接请求。同时,它也支持作为客户端,连接到远程服务器进行数据交互。 2. **数据传输**:该工具提供发送和接收数据的功能,可以...

    c#超级Socket库SuperSocket,SOCKET多线程编程

    SuperSocket是一款高性能、轻量级的C# Socket服务器开发框架,它为开发者提供了构建基于TCP/IP协议的应用程序的便利工具。在.NET平台上,SuperSocket以其易于扩展和高度定制化的特性,成为了Socket多线程编程的一个...

    HP用SOCKET实现(客户端---服务端)

    Socket编程是一种用于网络通信的技术,它允许不同计算机系统之间建立双向的数据流。在PHP中,使用`socket_*`函数族可以轻松地创建、管理和操作Socket。本案例中,我们关注的是基于TCP协议的Socket通信,它提供了一个...

    c++实现socket:一个服务器对应多个客户端相互传递信息

    1. **初始化socket库**:首先,需要包含必要的头文件(如`#include <sys/socket.h>`,`#include <netinet/in.h>`,`#include <arpa/inet.h>`等),并调用`socket()`函数创建一个socket描述符。 2. **绑定和监听**:...

    c# Socket 多线程 分包 发送/接受数据

    1. **C# Socket**: C#中的Socket类提供了低级别的网络通信接口,它可以用于TCP(Transmission Control Protocol)或UDP(User Datagram Protocol)协议。TCP提供面向连接的、可靠的字节流服务,而UDP则是无连接的...

    SuperSocket Socket C# 通讯详细介绍

    在C#编程领域,网络通信是一个不可或缺的部分,而SuperSocket则是一个强大且易用的.NET Socket服务器框架。它为开发者提供了构建自定义网络应用服务的基础,使得处理TCP连接变得简单高效。本文将深入探讨SuperSocket...

    socket池,socket

    1. 初始化与配置:在应用程序启动时,根据预设的参数初始化Socket池,如最大连接数、最小连接数、超时时间等。 2. 获取Socket:当需要建立连接时,从池中取出一个Socket,如果池为空,则创建新的Socket。可以采用...

    socket详解 socket详解 socket详解 socket详解

    在网络编程中,Socket 是一个基本概念, plays a crucial role in building network applications. 在 C# 中,Socket 编程是通过使用 System.Net.Sockets 命名空间中的类和方法来实现的。下面,我们将详细介绍 ...

    Socket实现一对一聊天

    Socket编程是网络通信的核心技术,它为应用程序提供了一种通过网络发送和接收数据的方法。在本文中,我们将深入探讨如何使用Socket实现一对一的聊天应用,包括客户端和服务端的设计与实现。 **1. Socket基础** ...

    VB 实现的socket编程 聊天程序

    例如,`Socket1.Port = 1234` 和 `Socket1.Host = "192.168.1.1"`,其中1234是自定义的端口,"192.168.1.1"是服务器的IP地址。 为了实现聊天功能,我们需要实现以下关键步骤: 1. **连接服务器**:使用`Socket1....

    winform socket通讯和心跳包

    1. **创建Socket对象**:在Winform程序中,我们首先需要实例化一个Socket对象,指定其使用的协议类型(如TCP或UDP)。 2. **绑定Socket**:使用`Bind()`方法将Socket绑定到本地IP地址和端口,这样Socket就能监听...

Global site tag (gtag.js) - Google Analytics