帮助解决方案或哪里出了问题是徒劳的
import java.io.*;
import java.util.*;
import java.awt.image.*;
import java.awt.*;
import java.awt.event.*;
public class screenshot
{
public static void main(){
Link l=new Link("localhost",1111);
System.out.println(Link.getIpAddress());
String s[]=its();
for(int i=0;i<s.length;i++){
l.send(s[i]);//l.send("hello22");
}
for(int i=0;i<s.length;i++){
System.out.println(l.recieve());
}
//System.out.println(l.recieve());
}
public static String[] its(){
String[] tbo=null;
try{
Robot r=new Robot();
BufferedImage img=r.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
System.out.println(img.getWidth()+" "+img.getHeight());
tbo=new String[img.getWidth()];
for(int i=0;i<tbo.length;i++){
tbo[i]="";
}
for(int i=0;i<img.getWidth();i++){
for(int j=0;j<img.getHeight();j++){
tbo[i]+=img.getRGB(i,j);//out+=img.getRGB(i,j);
}
System.out.println(i);
//out+="b";
}
//for(int i=0;i<img.getWidth();i++){
// out+=tbo[i]+"\n";
//}
}catch(Exception e){}
//Base bo=new Base("1234567890-\n");
//Base bn=new Base("1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM");
//BaseNumber bnum=new BaseNumber(out,bo);
//out=bnum.valueAs(bn).toString();
return tbo;
}
public static void main2(){
System.out.println(its());
}
}
在这种情况下创建要发送到localhost的链接对象的Link类
class Link
{
final public String ip;final public int port;Listener l;
//protected ArrayList<String> queue=new ArrayList<String>();
public Link(String ip,int port)
{
this.ip=ip;
this.port=port;
this.l=new Listener(port);
l.start();
}
public static String getIpAddress(){
try{
return InetAddress.getLocalHost().getHostAddress();
}catch(Exception e){
System.out.println("An error ocurrerd in getIp\n "+e);
System.exit(0);
return null;
}
}
public void send(String st)
{
try{
Socket s=new Socket(ip,port);
DataOutputStream dout=new DataOutputStream(s.getOutputStream());
dout.writeUTF(st);
dout.flush();
dout.close();
s.close();
}catch(Exception e){
System.out.println("An error ocurrerd in send\n "+e);
e.printStackTrace();
System.exit(0);
}
}
public String recieve(){
while(l.queue.size()==0);
String s=l.queue.get(0);
l.queue.remove(0);
return s;
}
}
class Listener extends Thread{
ArrayList<String> queue=new ArrayList<String>();int port;
Listener(int port){
this.port=port;
}
public void run(){
try{
while(true){
ServerSocket ss=new ServerSocket(port);
Socket s=ss.accept();
DataInputStream dis=new DataInputStream(s.getInputStream());
String str=(String)dis.readUTF();
queue.add(str);
ss.close();
}
}catch(Exception e){
System.out.println("An error ocurrerd in recieve\n "+e);
System.exit(0);
}
}
}
while(true){
ServerSocket ss=new ServerSocket(port);
Socket s=ss.accept();
DataInputStream dis=new DataInputStream(s.getInputStream());
String str=(String)dis.readUTF();
queue.add(str);
ss.close();
}
理想情况下,您应该在while循环外创建并关闭一个套接字,然后在while循环内读取。
与Send类似,您不应该在每次必须发送时都创建套接字。如果必须这样做,那么服务器在while循环中也必须有accept()。
希望这能解决你的问题。
我还尝试提供私有IP和端口4444,运行脚本后,服务器代理立即关闭,并且收到错误java.net.socketException:Connection reset by Peer:socket write error。 > JMeter控制台日志 我做了telnet privateip:4444,并通过了test命令。服务器代理返回yep数据。此设置正在本地框上工作。不在AWS盒子上。 请让我知道
我正在尝试使用套接字实现一个HTTP服务器。如果客户端(例如浏览器)请求目录,服务器将显示可用文件列表。当客户端请求文件时就会出现问题。我得到以下错误: stacktrace显示问题来自方法: 但我想不出有什么问题。你能帮帮我吗? 编辑 谢谢大家的回答。在我读了你的答案后,我明白了问题是插座出现错误的时候。这是我的错误代码: 我的新代码是这样的:
当我处理REST服务时,这是我应该期待的吗?我的服务器在亚马逊EC2上。 读取错误:SSL=0x1211A88:系统调用期间发生I/O错误,连接由对等方重置 javax.net.ssl.sslexception:读取错误:SSL=0x1211A88:系统调用期间的I/O错误,连接由在org.apache.harmony.xnet.provider.jsse.nativecrypto.ssl_rea
我正在使用Python,并在给定端口上侦听UDP数据包,一切似乎都很好地工作-但经过较长时间后,脚本崩溃,出现以下错误: 当重新启动脚本时,相同的崩溃会在较短的时间后再次发生。相反,重新启动服务器似乎可以再次完全解决问题。 关于插座方面的事情,我正在做: 我是否遗漏了一些显而易见的东西,或者只是有一个简单的方法来避免这种情况? 提前感谢您提供的任何信息! 本吉
这是我的代码片段。我得到的是访客的IP地址,但不是位置信息。它给出:java.net.SocketException:连接重置在java.net.SocketInputStream.Read(未知源)在java.net.SocketInputStream.Read(未知源)
问题内容: 我在尝试从套接字读取时遇到以下错误。我正在执行该操作,并且出现此错误。仔细阅读文档,这表明连接的客户端部分关闭了连接。在这种情况下,我是服务器。 我可以访问客户端日志文件,但它没有关闭连接,实际上它的日志文件表明我正在关闭连接。有人知道为什么会这样吗?还有什么要检查的?当有本地资源可能达到阈值时,会出现这种情况吗? 我确实注意到我有以下几行: 就在readInt()。这是有原因的(长话