Tag: 客户端 服务器

multithreading与客户端服务器程序

我正在尝试使用我一直在研究的客户端/服务器程序实现multithreading。 我需要允许多个客户端同时连接到服务器。 我目前有4个类:客户端,服务器,协议和处理线程的工作者。 以下代码是我对这些类的代码: SocketServer类: public class SocketServer { public static void main(String[] args) throws IOException { int portNumber = 9987; try ( ServerSocket serverSocket = new ServerSocket(portNumber); Socket clientSocket = serverSocket.accept(); PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader in = new BufferedReader( new InputStreamReader(clientSocket.getInputStream())); ) { Thread thread = new Thread(new ClientWorker(clientSocket)); thread.start(); //start […]

ServerSocket java没有读取inputStream?

我写的服务器是java这里是代码: public mainClass() { try { ss = new ServerSocket(8080); while (true) { socket = ss.accept(); System.out.println(“It is accept!”); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); //out = new PrintWriter(socket.getOutputStream(),true); line = in.readLine(); System.out.println(“you input is :” + line); //out.close(); in.close(); socket.close(); } } catch (IOException e) { } 我正在使用iPhone应用程序作为客户端。 现在我的问题是服务器在iphone上运行应用程序时没有读取输入流..但是一旦应用程序终止,java程序就打印出已经发送到服务器的String。不知道是什么正在这里发生..如果这不是一个好问题的话…… – (void)viewDidLoad { [super viewDidLoad]; socket […]

如何在java中了解客户端套接字程序中的客户端端口和ip地址

我使用socket在java中创建了一个多客户端 – 服务器通信。 我有一个服务器和一个客户端。 我想用多个客户端测试我的程序。 我计划创建一个动态创建IP和端口的模拟器..为此我只想知道如何在套接字程序中设置客户端IP和端口。 任何人都可以帮助我…我使用InetAddress.getByName来获取客户端地址。 public Socket(Proxy proxy) { if (proxy != null && proxy.type() == Proxy.Type.SOCKS) { SecurityManager security = System.getSecurityManager(); InetSocketAddress epoint = (InetSocketAddress) proxy.address(); if (security != null) { if (epoint.isUnresolved()) epoint = new InetSocketAddress(epoint.getHostName(), epoint.getPort()); if (epoint.isUnresolved()) security.checkConnect(epoint.getHostName(), epoint.getPort()); else security.checkConnect(epoint.getAddress().getHostAddress(), epoint.getPort()); } impl = new SocksSocketImpl(proxy); impl.setSocket(this); } […]

Java Socket客户端和服务器

我尝试使用以下代码从服务器到客户端发送文件和目录列表。 服务器从客户端接收,但我不知道服务器是否没有发回结果或客户端不接受它。 服务器端: package without.thread; import java.io.BufferedOutputStream; import java.net.ServerSocket; import java.net.Socket; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import static java.rmi.Naming.list; import java.util.ArrayList; import static java.util.Collections.list; import java.util.logging.Level; import java.util.logging.Logger; public class SerTest { public static int reads,red; public static void main(String[] args) { try { System.out.print(“im ready, call my […]

在单个系统上运行客户端/服务器prog

我想知道是否有两个程序,一个叫做server而另一个叫做client ,这两个分别说明服务器和客户端,是否可以在一台机器上测试它们? 考虑到我定义了客户端套接字如下: socket = new Socket(“127.0.0.1”,3000); 编辑:服务器部分: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; class TCPServer { private static ServerSocket serverSocket; private static Socket socket; private static PrintWriter toClient; private static BufferedReader fromClient; public static void run() throws IOException { System.out.println(“Server is waiting for connections…”); while (true) { openStreams(); […]

为什么我的申请没有进入我的if语句

我正在尝试用Java编写控制台客户端 – 服务器应用程序; 使用套接字,我目前有一个简单的登录系统和一个简单的命令系统。 登录系统似乎有效,但无论用户是否输入正确的凭据,它都会向客户端打印“无效的用户名和密码”行。 – 连接肯定有效。 但是,命令系统似乎根本不起作用,当服务器收到命令时,它似乎没有发回任何东西。 所以我的主要问题是为什么我的服务器在收到命令时不会向客户端发送任何内容? 这是我的服务器: import java.io.*; import java.net.*; class TCPServer2 { public static void main(String argv[]) throws Exception { ServerSocket welcomeSocket = new ServerSocket(6789); String[][] Login = {{“MATT”,”UNCP”},{“JOHN”,”UNCP”},{“CARL”,”UNCP”}}; String Command; String username; String username1; String password; String password1; String cmd; while(true) { Socket connectionSocket = welcomeSocket.accept(); BufferedReader inFromClient = […]

Java – Threads,Swing和ServerSocket

我知道,我知道,到处都有一百万个问题和答案。 关于它的大量详细文章,几种类型的例子。 过去几个小时我一直在阅读它,但这并没有成功。 我问这个的原因是因为我仍然不明白我需要做什么显然是因为我的代码仍然无效。 我知道Swing如何与EDT一起工作,如果我要使用ServerSocket的accept()方法,我将需要为Swing启动一个新线程(我想?)。 当我运行我的代码时,窗口就会打开并冻结。 我的问题是,有人可以看看我的代码,告诉我我做错了什么,并向我解释,就像我只有半个脑子一样? (因为那就是我的感受。:P) 以下是我已经读过的一些地方: 来自SO的这个问题。 这个网站。 当然还有Oracle对swing和thread的解释。 以及其他一些随机网站。 Main.class package com.sever.core; import java.io.IOException; import java.net.Socket; import java.util.Scanner; import javax.swing.SwingUtilities; public class Main { private SocketManager network; public static void main(String[] args){ SwingUtilities.invokeLater(new Runnable(){ @Override public void run() { Window window = new Window(); window.setVisible(true); } }); SwingUtilities.invokeLater(new Runnable(){ @Override public […]

使用java从服务器(ServerSocket)读取客户端(客户端套接字)上的字节数据包

ima新。 ima java developer(fresher),目前正在研究BSE项目,我正面临着从服务器(服务器套接字)读取客户端(客户端套接字)上的字节数据包的问题。 如果你可以帮助我那么请帮助我。 提前致谢

在Netty客户端上发送多个异步请求

首先,让我解释一下背景: 我必须创建一个客户端,它将发送许多HTTP请求来下载图像。 这些请求必须是异步的,因为只要图像完成,它就会被添加到队列然后打印到屏幕。 因为图像可能很大并且响应被分块,我的处理程序必须将它聚合到缓冲区中。 所以我按照Netty示例代码( HTTP勺子示例 )。 目前,我有三个静态Map来存储每个通道的通道ID和缓冲区/块布尔/我的最终对象。 private static final ConcurrentHashMap BUFFER_MAP = new ConcurrentHashMap(); private static final ConcurrentHashMap PACK_MAP = new ConcurrentHashMap(); private static final ConcurrentHashMap CHUNKS_MAP = new ConcurrentHashMap(); 之后,我创建了我的引导程序客户端,并计数到countDown挂起的请求数。 当响应图像为complet时,最终队列和计数器将传递给我的Handler。 final ClientBootstrap bootstrap = new ClientBootstrap( new NioClientSocketChannelFactory( Executors.newCachedThreadPool(), Executors.newCachedThreadPool())); bootstrap.setOption(“keepAlive”, true); bootstrap.setOption(“tcpNoDelay”, true); bootstrap.setOption(“reuseAddress”, true); bootstrap.setOption(“connectTimeoutMillis”, 30000); final CountDownLatch latch […]

multithreading客户端 – 服务器聊天,使用套接字

服务器和客户端使用我自己的协议进行通信,看起来像XMPP。 我应该实现聊天应用程序。 因此,当一个用户写入字符串时,它应该通过服务器发送给其他客户端。 我在服务器上有方法sendToAll。 但是用户只有在按下回车键时才会看到其他用户的消息。 用户如何在不按Enter键的情况下接收消息? 所以这是我的客户: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import org.apache.log4j.Logger; import dataart.practice.protocols.XMLProtocol; public class Client { public static final String SERVER_HOST = “localhost”; public static final Integer SERVER_PORT = 4444; public static final Logger LOG = Logger.getLogger(Client.class); private static BufferedReader […]