ip地址
windows+R然后输入cmd,输入ipconfig
以太网适配器ipv4网关
服务器
package ser;
public class ser1 {
public void setServer(int port){
try{
System.out.println("1.即将在 "+port+" 端口创建服务器");
java.net.ServerSocket ss=new java.net.ServerSocket(port);//在这个端口创建服务器
System.out.println("2.在 "+port+" 端口创建服务器成功");
java.net.Socket client=ss.accept();//阻塞,没有客户机进来的时候一直等待,获取客户机对象
System.out.println("3.有一个客户机进来了");
java.io.InputStream ins=client.getInputStream();//获取客户机的输入流
java.io.OutputStream ous=client.getOutputStream();//获取客户机的输出流
String mgs="who are you?";
byte[] data=mgs.getBytes();//读取字节
ous.write(data);//将输出流传给客户机
int t=ins.read();//读取输入流
System.out.println("服务器获得的客户机输入 "+t);
}catch(Exception ef){
ef.printStackTrace();
}
System.out.print("服务器退出了");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ser1 a=new ser1();
a.setServer(9900);
}
}
客户机
package cli;
public class cli1 {
public void con2Sever(String ip,int port){
try{
System.out.println("1.即将创建到服务器的连接ip "+ip+" 端口号port "+port);
java.net.Socket client=new java.net.Socket(ip,port);
System.out.println("2.到服务器的连接ip "+ip+" port "+port+" 创建成功");
java.io.InputStream ins=client.getInputStream();
java.io.OutputStream ous=client.getOutputStream();
byte[] datas=new byte[10];
ins.read(datas);//读取到的数据存入datas
String mgs=new String(datas);
System.out.println("读取到的数据 "+mgs);
ous.write('a');
System.out.println("4.发送了一个字节:");
ous.write('b');
ous.write('c');
}catch(Exception ef){
ef.printStackTrace();
}
System.out.println("客户机退出了");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
cli1 a=new cli1();
a.con2Sever("192.168.122.1",9900);
}
}
在命令行输入,获得服务器的数据,who are you
改进
//循环等待客户机的连接
while(true){
java.net.Socket client=ss.accept();//阻塞,没有客户机进来的时候一直等待,获取客户机对象
System.out.println("3.有一个客户机进来了");
java.io.InputStream ins=client.getInputStream();//获取客户机的输入流
java.io.OutputStream ous=client.getOutputStream();//获取客户机的输出流
String mgs="who are you?\r\n";//输入光标回到开头,换行
byte[] data=mgs.getBytes();//读取字节
ous.write(data);//用输出流发送,发送传给客户机
ous.flush();//强制输出
int t=0;
while(t!=13){//没有回车
t=ins.read();//读取输入流
System.out.println("服务器获得的客户机输入 "+t);
}
System.out.println("客户机按了回车 "+t);
client.close();
}
让服务器可以循环等待不至于客户机输入一个字母就退出,read只能读取一个字节,所以用一个循环就可以读取一个字符串,当然输出是ASCII码