C++一个客户端与多个服务器通信
客户端之间的通讯有两个办法。
1 服务器中转
2 服务器上注册后,客户端之间直接通信。
对于第一种方法,大多比较简单。查一下socket的文章,还有大把现成的代码给你看。
第二个方法就稍微复杂一些。
但原理都一样。客户端A,链接服务器后,地址信息就保存到了服务器上。除了保持与服务器的通信外。另外开启一个 Socket,绑定到另一个端口,并且一直监听此端口。
客户端B连接服务器,从服务器上获取客户端A的地址信息。把客户端A当成服务器,连接A。
(1) 连接 当客户在浏览器上键入或单击一个URL时,客户程序就在网络上搜索定位正确的服务器,并与其连接。
(2) 请求 在连接后,客户程序向服务器发出一个请求,要求服务器向自己发送指定的信息。
(3) 响应 服务器收到请求,就向客户端传回所需要的文件。
(4)关闭 服务器发出数据后,就断开与客户端的连接,以便接受其他客户的连接。
你可以在每个用户连上服务器端时,都发送一个消息,就是用4个字节表示是用户的ID,并将与用户通信的socket,用一个HashMap存储起来,而不是用LinkList。
后面如果A发送消息给C,就把A的前四个字节(即ID)取出来,在HashMap中找到与C通信的socket,然后把消息通过socket发送出去····
这部分代码应该很容易实现的,Socket通信这东西,理清了思路就很好弄了~~
1一楼bibofun同学说的很对,内网的计算机可以直接通信。
2这两台电脑中的一台,您或许需要用作服务器使用,那么最好设置为一个固定的内网IP,比如1921680200,如果服务器需要访问外网,那么网关也是要设置的,还有DNS也需要设置,否则,仅需要设置IP即可。
3客户端是另一台电脑了,如果内网可以自动获得IP,那就不需要设置这台电脑的IP。
4查看ip地址是非常必要的,通过"开始"->"运行"->"CMD"->"ipconfig",分别在服务器与客户端上查看ip,务必需要二者的IP均在一个段中,两者才可通信。
5当然是测试是否连通,ping对方的ip地址就可以判断。比如,客户端ping服务器,在命令窗口输入:ping 1921680200
1最简单的方法:
public static String reverse1(String str)
{
return new StringBuffer(str)reverse()toString();
}
2最常用的方法:
public static String reverse3(String s)
{
char[] array = stoCharArray();
String reverse = ""; //注意这是空串,不是null
for (int i = arraylength - 1; i >= 0; i--)
reverse += array[i];
return reverse;
}
3常用方法的变形:
public static String reverse2(String s)
{
int length = slength();
String reverse = ""; //注意这是空串,不是null
for (int i = 0; i < length; i++)
reverse = scharAt(i) + reverse;//在字符串前面连接, 而非常见的后面
return reverse;
}
4C语言中常用的方法:
public static String reverse5(String orig)
{
char[] s = origtoCharArray();
int n = slength - 1;
int halfLength = n / 2;
for (int i = 0; i <= halfLength; i++) {
char temp = s[i];
s[i] = s[n - i];
s[n - i] = temp;
}
return new String(s); //知道 char数组和String相互转化
}
0条评论