如何在一台电脑上同时运行socket的客户端与服务端
可以做一个简单的比喻,就像在一个文件夹中不能有两个同名的文件,但是你却可以打开很多个同一个文件socket的原理是:服务器是在本机上新建一个服务端口,比如建一个3128的服务端口,这个时候它就会占住这个端口不让别人再的服务器再使用这个端口客户端是向某一个IP地址请求端口,不需要占服务的端口。即:一个电脑(更严格的说是网卡)上,不能新建2个有相同socket端口的服务器,但是可以有N个连相同端口的客户端

Java中建立一个socket客户端需要几步
代码给你自己看去: Socket socket = new Socket("192.168.1.72", 4700);// 向本机的4700端口发出客户请求BufferedReader sin = new BufferedReader(new InputStreamReader(System.in,"UTF-8"));// 由系统标准输入构造BuffereadReader对象PrintWriter os = new PrintWriter(socket.getOutputStream());// 由socket对象得到输出流,并创建PrintWriter对象BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));// 由socket对象得到输出流,并构建BufferedReader对象String readLine;readLine ="客户端启动成功!";System.out.println(readLine);// 系统由标准输入读入一个字符串while (!readLine.equals("bye")) {// 若从标准输入得到的字符串是bye则停止循环os.println(readLine);// 将从标准输入流中得到的字符串输入到Serveros.flush();// 刷新输入流使Server马上得到该字符串System.out.println("client:" + readLine);// 在系统标准输出上打印输入该字符串System.out.println("Server:" + is.readLine());// 从Server上读入一字符串并打印readLine = sin.readLine();// 从系统标准输入得到字符串}os.close();// 关闭输入流is.close();// 关闭输出流socket.close();// 关闭socket流} catch (Exception e) {e.printStackTrace();} }
Socket socket = new Socket("127.0.0.1", 9123);
udp 还是tcp呢?网上搜个 程序自己看吧...
1步。虽然没意义,但已经建立。

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

用Java 的socket实现客户端的功能
//服务端程序:import java.io.*;import java.net.*; public class TCPServer { public static void main(String[] args) throws IOException { new TCPServer().init(); } @SuppressWarnings("static-access") private void init() throws IOException{ @SuppressWarnings("resource") ServerSocket server = new ServerSocket(1000); Socket client = null; while(true){ try { client = server.accept(); BufferedInputStream bis = new BufferedInputStream(client.getInputStream()); byte[] b = new byte[1024]; int len = 0; String message = ""; while((len=bis.read(b))!=-1){ message = new String(b,0,len); System.out.print("客户端:"+client.getInetAddress().getLocalHost().getHostAddress()+"发来消息:" + message); if("byte".equals(message.trim())) client.close(); PrintWriter pw = new PrintWriter(client.getOutputStream(),true); pw.println(message); } } catch (Exception e) { System.err.println("客户端:"+client.getInetAddress().getLocalHost().getHostAddress()+" 已断开连接!"); } } }}//客户端程序:import java.io.*;import java.net.Socket; public class TCPClient implements Runnable{ public static void main(String[] args) throws IOException { new TCPClient().init(); } private void init() throws IOException{ @SuppressWarnings("resource") final Socket client = new Socket("127.0.0.1",1000); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String send = ""; while(true){ send = in.readLine(); PrintWriter out = new PrintWriter(client.getOutputStream(),true); if(!"byte".equals(send.trim())) out.println(send); else{ out.println(send); System.exit(0); } new Thread(new TCPClient(){ @SuppressWarnings("static-access") public void run(){ try { BufferedInputStream bis = new BufferedInputStream(client.getInputStream()); byte[] b = new byte[1024]; int len = 0; while((len=bis.read(b))!=-1){ System.out.println("服务器:" +client.getInetAddress().getLocalHost().getHostAddress()+"发来消息:"+new String(b,0,len).trim()); } } catch (IOException e) { System.err.println("连接服务器失败!"); } } }).start(); } } public void run() {}}//服务器测试结果:客户端:192.168.0.200发来消息:001 byte客户端:192.168.0.200发来消息:byte客户端:192.168.0.200 已断开连接!客户端:192.168.0.200发来消息:adasd客户端:192.168.0.200 已断开连接!//客户端测试结果:---001号客户端--001 byte服务器:192.168.0.200发来消息:001 bytebyte //001礼貌说跟服务器说byte---002号客户端--adasd //002客户端直接关闭程序服务器:192.168.0.200发来消息:adasd

客户端怎么判断Socket连接已与服务器断开
你可以根据服务器收到的数据的长度来判断,如果服务器收到的数据长度是0,那么意味着你的客户端程序已经断开了连接。从tcp/ip协议栈的角度来说,就是客户端程序关闭了自己写的这一半连接,向服务器发出了一个fin。这涉及到tcp的状态迁移,关于这方面的知识,建议你看一下richard stevens先生的《tcp/ip详解》卷一和《unix网络编程》卷一,上面有详细的解释。 关于你的第二个问题,建议你仔细看一下自己的服务器程序代码。服务器程序首先要建立一个监听socket,当有客户端连接上来时,服务器会在一个新socket上接受客户端连接。所以并不存在“乱”的问题。关于这个问题同样推荐你看上面的两本关于网络编程的经典著作。

本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/44207.html。