这种东西,Google下大把吧,正好前阵子有一个TCP通讯的,借你参考下好了:
Server Side
package nio;
import javaioByteArrayOutputStream;
import javaioIOException;
import javanetInetSocketAddress;
import javanetServerSocket;
import javanioByteBuffer;
import javaniochannelsSelectionKey;
import javaniochannelsSelector;
import javaniochannelsServerSocketChannel;
import javaniochannelsSocketChannel;
import javatextDateFormat;
import javatextSimpleDateFormat;
import javautilDate;
public class EchoServer {
private static int SOCKET_NUM = 55555;
private static DateFormat dateFormatter = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
/
@param args
/
public static void main(String[] args) {
new EchoServer()start();
}
public void start() {
try {
Selector selector = bindServer(); // 绑定服务端口,并定义一个事件选择器对象记录套接字通道的事件
/ 通过此循环来遍例事件 /
while (true) {
log("Waiting events");
int n = selectorselect(); // 查询事件如果一个事件都没有,这里就会阻塞
log("Got events: " + n);
ByteBuffer echoBuffer = ByteBufferallocate(50); // 定义一个byte缓冲区来存储收发的数据
/ 循环遍例所有产生的事件 /
for (SelectionKey key : selectorselectedKeys()) {
SocketChannel sc;
selectorselectedKeys()remove(key); // 将本此事件从迭带器中删除
/ 如果产生的事件为接受客户端连接(当有客户端连接服务器的时候产生) /
if ((keyreadyOps() & SelectionKeyOP_ACCEPT) == SelectionKeyOP_ACCEPT) {
ServerSocketChannel subssc = (ServerSocketChannel) keychannel(); // 定义一个服务器socket通道
sc = subsscaccept(); // 将临时socket对象实例化为接收到的客户端的socket
scconfigureBlocking(false); // 将客户端的socket设置为异步
scregister(selector, SelectionKeyOP_READ); // 将客户端的socket的读取事件注册到事件选择器中
Systemoutprintln("Got new client:" + sc);
}
/ 如果产生的事件为读取数据(当已连接的客户端向服务器发送数据的时候产生) /
else if ((keyreadyOps() & SelectionKeyOP_READ) == SelectionKeyOP_READ) {
sc = (SocketChannel) keychannel(); // 临时socket对象实例化为产生本事件的socket
ByteArrayOutputStream bos = new ByteArrayOutputStream(); // 定义一个用于存储byte数据的流对象,存储全部信息
echoBufferclear(); // 先将客户端的数据清空
try {
// 循环读取所有客户端数据到byte缓冲区中,当有数据的时候read函数返回数据长度
// NIO会自动的将缓冲区一次容纳不下的自动分段
int readInt = 0; // 为读取到数据的长度
while ((readInt = scread(echoBuffer)) > 0) {
// 如果获得数据长度比缓冲区大小小的话
if (readInt < echoBuffercapacity()) {
byte[] readByte = new byte[readInt]; // 建立一个临时byte数组,将齐长度设为获取的数据的长度
// 循环向此临时数组中添加数据
for (int i = 0; i < readInt; i++) {
readByte[i] = echoBufferget(i);
}
boswrite(readByte); // 将此数据存入byte流中
}
// 否则就是获得数据长度等于缓冲区大小
else {
boswrite(echoBufferarray()); // 将读取到的数据写入到byte流对象中
}
}
// 当循环结束时byte流中已经存储了客户端发送的所有byte数据
log("Recive msg: " + new String(bostoByteArray()));
} catch (Exception e) {
eprintStackTrace(); // 当客户端在读取数据 *** 作执行之前断开连接会产生异常信息
keycancel(); // 将本socket的事件在选择器中删除
break;
}
writeBack(sc, bostoByteArray()); // 向客户端写入收到的数据
}
}
}
} catch (Exception e) {
eprintStackTrace();
}
}
/
绑定服务端口,初始化整个服务
@throws IOException
/
private Selector bindServer() throws IOException {
log("Start binding server socket:" + SOCKET_NUM);
Selector selector = Selectoropen(); // 定义一个事件选择器对象记录套接字通道的事件
ServerSocketChannel ssc = ServerSocketChannelopen(); // 定义一个异步服务器socket对象
sscconfigureBlocking(false);// 将此socket对象设置为异步
ServerSocket ss = sscsocket(); // 定义服务器socket对象-用来指定异步socket的监听端口等信息
InetSocketAddress address = new InetSocketAddress(SOCKET_NUM); // 定义存放监听端口的对象
ssbind(address); // 将服务器与这个端口绑定
sscregister(selector, SelectionKeyOP_ACCEPT); // 将异步的服务器socket对象的接受客户端连接事件注册到selector对象内
log("Binded socket at:" + SOCKET_NUM);
return selector;
}
private boolean writeBack(SocketChannel sc, byte[] b) {
ByteBuffer echoBuffer = ByteBufferallocate(blength); // 建立这个byte对象的ByteBuffer
echoBufferput(b); // 将数据存入
echoBufferflip(); // 将缓冲区复位以便于进行其他读写 *** 作
try {
// 向客户端写入数据,数据为接受到数据
scwrite(echoBuffer);
} catch (IOException e) {
eprintStackTrace();
return false;
}
Systemoutprintln("Msg echo back: " + new String(echoBufferarray()));
return true;
}
private static void log(Object msg) {
Systemoutprintln("SERVER [" + dateFormatterformat(new Date()) + "]: " + msg);
}
}
额,那个貌似会盗号,兄弟,用这个吧,这个占用内存少,除了支持连发外,还支持鼠标连点,自己设置连发间隔时间和连发按键设置,连发时可以打字聊天哈,推荐给你,觉得不错记得采纳哦
下边这段代码我在AutoHotkey中测试过,在DP连发工具44中也测试过。可以实现你要的功能,包括连点的间隔。
1234567$RButton:: ;在鼠标右键按下时while GetKeyState("RButton", "P") ;如果鼠标右键为按下的状态则进入循环{ Click right
;单击右键 Sleep 1000 ;等一秒}return
代码中分号后的中文是注释。
你可以把这段代码复制过去然后点下边的“生成并启用连发”,把鼠标移动到浏览器窗口里按住右键并移动鼠标,即可看到效果。
有问题请追问
方案1:如果出门在外可以接触到上网的电脑,首先准备两个QQ并互加为好友(假设家中QQ为Q,在外使用QQ为B),然后执行下列的 *** 作即可随时远程监控家中的情况。
第一步:将家中的电脑为开机自动联网并自动登录QQ,同时设置好摄像头的位置和拍摄角度,在A中将B好友昵称设置为主人。在电脑上同时登录A和B,通过B向A发起视频聊天请求,此时在桌面上会d出和主人聊天对话窗口。
第二步:下载AutoKey录制自动应答脚体。下载后解压软件,然后运行其中的AutoScriptWriter,单击Arecord启动脚本录制,单击视频请求窗口中的接受,然后停止脚本的录制。
第三步:返回录制窗口按提示将脚本保存为pcedu123ahk,接着运行AutoHotkey的Cover Ahk to exe组件,将上述脚本转化为pcedu123exe放置到c:\Windows\System32目录下。好了,接下来设置pcedu123exe开机启动,以后我们在任何一部上网的电脑向家中QQ发起视频邀请后,家中QQ就会自动接受让我们查看视频。
方案二:如查出门在外没有电脑,我们还可以借助手机QQ查看地家中视频,手机无要开通GPRS套餐,版本则要qq2007以上, *** 作同上只要在手机QQ上向家中QQ发起视频,我们就可能在手机上查看家中的视频了。
PS:如果没有QQ账号,我们还可能借助XP自带的远程桌面,远程登录家中电脑并开启视频查看。对于Skype用户,可以下载SkypeAutoanswer,它可以设置自动接收指定好友的来电并开启视频。
以上就是关于请教怎样发送socket请求包,并获得返回数据全部的内容,包括:请教怎样发送socket请求包,并获得返回数据、DNF连发工具 SET_AHK 1.6.0稳定版、怎样使用ahk脚本编写鼠标连发等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)