网络通信初步讲解
从刚开始讲,我们最常用的聊天工具无非是qq,想要编程达到qq的效果还是需要一定的理解,比如说,我们手中的电脑是服务器,想要跟你聊天的人就是客户机,你的电脑的服务器有一个属于你的标示,这里可以理解成门牌号,当人家想要访问你的时候,必须要知道你的门牌号,就是代码一下这一段:
ServerSocket s=new ServerSocket(port);
System.out.println(port+"连接成功");
这是你创建的服务器,其中的port是你将要自定义的门牌号,虽然门牌号可以自己定义,但是范围还是要在从0~65535之间,我给自己定的是8888,如下示意:
new Server().setup(8888);
public class Server {
public void setup(int port){
try {
//根据所给的端口号打开服务器端口,相当于开门
ServerSocket s=new ServerSocket(port);
System.out.println(port+"连接成功");
Socket messager=s.accept();
InputStream tome=messager.getInputStream();
OutputStream tosomeone=messager.getOutputStream();
//写到别人那里的
String msg = "打死你";
tosomeone.write(msg.getBytes("GBK"));
//我接收到的,也就是读到我这里的
while(true){
int n=tome.read();
System.out.println((char)n);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
//你将要打开的服务器门牌号8888
new Server().setup(8888);
}
}
这是完整代码,其中这一段:
Socket messager=s.accept();
InputStream tome=messager.getInputStream();
OutputStream tosomeone=messager.getOutputStream();
相当于创建客户机就是Socket,你的电脑在这里就相当于客户机了,要创建一个信使也就是messager来接受服务器发来的讯息,同时inputstream是客机发给主机,outputstream是主机发给客机,下面就是实现一个写到客机上的代码:
String msg = "打死你";
tosomeone.write(msg.getBytes("GBK"));
//我接收到的,也就是读到我这里的
while(true){
int n=tome.read();
System.out.println((char)n);
}
之所以要定义不断循环是为了不断读入,因为客机在一次链接成功以后,读入后就会断开与主机连接,例如:
所以我们这里设置无限读入
在我们用自己电脑的客户机去连接服务器时,我们的ip地址可以是localhost,这里要用到telnet服务器例如:
已成功服务器写入客户端,接下来是客户端写入服务器,随便在cmd上打些数字
屏幕上出现了这些字,好了完成了这些,你也就初步掌握了简单的网络通信,你就可以在局域网中用别人的计算机连接你的电脑聊天了,这时记住ip地址不再是localhost ,自己的真正地址哦