如何使用socket进行客户端和服务器端的通信

如何使用socket进行客户端和服务器端的通信,第1张

下载完成后,软件是一个单独的运行程序,可以直接打开软件。
3
软件的界面很简单,在左侧有tcp和udp的客户端或服务端的快捷按钮,上方有创建删除退出等选项按钮。
4
我们先来建立TCP的测试服务端。点击TCP Server再点击创建。
选择一个监听端口,这里我们使用6001作为服务端的监听端口。
建立完成后,服务端会自动启动,软件会显示启动监听的状态。
我们可以检测一下本机的6001端口是否已经打开。在DOS窗口中输入命令netstat -a,可以在列表中看到本机的6001端口的状态为listening的状态,表示本机的6001端口正处于监听的状态。
在DOS窗口中输入命令telnet 1921680140 6001来登录本地的6001端口。
点击回车键,就可以成功登录6001端口。在测试软件中就可以看到状态是已连接的状态,同时也可以看到对方的ip就是本地ip。
再来测试通信情况,在DOS窗口中输入a、b、c,在软件的接收窗口就可以看到收到的数据了。
在软件的发送窗口中输入1234567890,点击发送后,在DOS窗口中就可以看到软件发送过来的数据了。
测试完成后,在软件中点击停止监听,同时在DOS窗口中可以看到失去了跟主机的连接,表示测试连接已经断开。
再来创建TCP的客户端,点击TCP Client再点击创建。会d出创建socket客户端窗口,输入对方的ip和对方的端口,点击确认。
tcp的客户端已经建立好,如果对方的端口监听正常的话,点击连接就可以连接到对方的端口和对方进行测试通信了。

1客户端连接到代理服务器开放的端口;
2客户端向代理服务器发送验证申请;
3代理服务器向客户端发送一个数据包,从而客户端得知自己的通信申请是否被批准;
4客户端向代理服务器发送一个数据包,告知代理服务器自己要连接的目的主机的地址和端口;
5代理服务器开始进行到目的主机的真正连接;
6代理服务器为客户端开放一个新的端口并向客户端发送一个数据包告知客户端这个新的端口;
7客户端创建一个新的套接字并连接到代理服务器的新的端口;
8然后,代理服务器把由新端口接收到的数据都转发给目的主机,把从目的主机发过来的数据都由新端口转发给客户端。

import javanet;
import javalang;
import javaio;
public class MySocketServer
{

public static void main(String args[]) //throws IOException
{
try{
ServerSocket myServer = new ServerSocket(8018);
Systemoutprintln("正在监听端口:"+myServergetLocalPort());
Socket myClient = null;

boolean flag = true;
String InputMessage = null;
int c;
while(flag)
{
myClient = myServeraccept();
//接收客户端的信息,如果不是Stop就继续监听,加个if判断
DataInputStream dataIn = new DataInputStream(myClientgetInputStream());
//DataInputStream dataIn = new DataInputStream(new BufferedInputStream(myClientgetInputStream()));
OutputStream dataOut = myClientgetOutputStream();

while( (InputMessage = dataInreadLine()) != null )
{
if( InputMessageequals("stop"))
{
flag = false;
break;
}
else
{
Systemoutprintln("从客户端接收到的信息是:"+InputMessage);
//输入:读取至 末尾-1结束,遇到回车'\n'结束:
while((c=Systeminread())!= -1)
{
dataOutwrite((byte)c);
if( c== '\n')
{
dataOutflush();
break;
}

}

}
}
dataInclose();
dataOutclose();
myClientclose();
}
myServerclose();
}
catch(Exception e)
{
Systemoutprintln(egetMessage());
}

}

}
客户端:
import javaio;
import javalang;
import javanet;
public class MySocketClient
{
public static void main(String args[])
{
try{

Socket myClient = new Socket("192168125",8018);

DataInputStream dataIn = new DataInputStream(myClientgetInputStream());
OutputStream dataOut = myClientgetOutputStream();

boolean flag = true;
int c;
String serverResponse = null ;

while(flag)
{
while( (c=Systeminread())!= -1 )
{
dataOutwrite((byte)c);
if(c=='\n')
{
dataOutflush();
serverResponse = dataInreadLine();
Systemoutprintln("服务器的返回信息是:"+serverResponse);

}
}

}
dataInclose();
dataOutclose();
myClientclose();
}

catch(Exception e)
{
Systemoutprintln("Exception :"+egetMessage());
}
}
}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10892150.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存