黑马程序员-网络编程-自定义服务端和客户端
来源:互联网 发布:注册公司成本 知乎 编辑:程序博客网 时间:2024/05/19 18:17
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
浏览器客户端-自定义服务端
/*
演示客户端和服务端。
1,
客户端:浏览器 (telnet)
服务端:自定义。
2,
客户端:浏览器。
服务端:Tomcat服务器。
3,
客户端:自定义。(图形界面)
服务端:Tomcat服务器。
*/
import java.net.*;
import java.io.*;
class ServerDemo
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(11000);
Socket s = ss.accept();
System.out.println(s.getInetAddress().getHostAddress());
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
out.println("<font color='red' size='7'>客户端你好</font>");
s.close();
ss.close();
}
}
自定义浏览器-Tomcat服务端
import java.io.*;
import java.net.*;
class MyIE
{
public static void main(String[] args)throws Exception
{
Socket s = new Socket("192.168.1.254",8080);
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
out.println("GET /myweb/demo.html HTTP/1.1");
out.println("Accept: */*");
out.println("Accept-Language: zh-cn");
out.println("Host: 192.168.1.254:11000");
out.println("Connection: closed");
out.println();
out.println();
BufferedReader bufr = new BufferedReader(new InputStreamReader(s.getInputStream()));
String line = null;
while((line=bufr.readLine())!=null)
{
System.out.println(line);
}
s.close();
}
}
/*
http://192.168.1.254:11000/myweb/demo.html
GET /myweb/demo.html HTTP/1.1
Accept: application/x-shockwave-flash, image/gif, image/x-xbitmap, image/jpeg, i
mage/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application
/msword, application/QVOD, application/QVOD,
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0
.50727)
Host: 192.168.1.254:11000
Connection: Keep-Alive
*/
自定义图形界面浏览器
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
class MyIEByGUI
{
private Frame f;
private TextField tf;
private Button but;
private TextArea ta;
private Dialog d;
private Label lab;
private Button okBut;
MyIEByGUI()
{
init();
}
public void init()
{
f = new Frame("my window");
f.setBounds(300,100,600,500);
f.setLayout(new FlowLayout());
tf = new TextField(60);
but = new Button("转到");
ta = new TextArea(25,70);
d = new Dialog(f,"提示信息-self",true);
d.setBounds(400,200,240,150);
d.setLayout(new FlowLayout());
lab = new Label();
okBut = new Button("确定");
d.add(lab);
d.add(okBut);
f.add(tf);
f.add(but);
f.add(ta);
myEvent();
f.setVisible(true);
}
private void myEvent()
{
okBut.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
d.setVisible(false);
}
});
d.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
d.setVisible(false);
}
});
tf.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
try
{
if(e.getKeyCode()==KeyEvent.VK_ENTER)
showDir();
}
catch (Exception ex)
{
}
}
});
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
showDir();
}
catch (Exception ex)
{
}
}
});
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
private void showDir()throws Exception
{
ta.setText("");
String url = tf.getText();//http://192.168.1.254:8080/myweb/demo.html
int index1 = url.indexOf("//")+2;
int index2 = url.indexOf("/",index1);
String str = url.substring(index1,index2);
String[] arr = str.split(":");
String host = arr[0];
int port = Integer.parseInt(arr[1]);
String path = url.substring(index2);
//ta.setText(str+"...."+path);
Socket s = new Socket(host,port);
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
out.println("GET "+path+" HTTP/1.1");
out.println("Accept: */*");
out.println("Accept-Language: zh-cn");
out.println("Host: 192.168.1.254:11000");
out.println("Connection: closed");
out.println();
out.println();
BufferedReader bufr = new BufferedReader(new InputStreamReader(s.getInputStream()));
String line = null;
while((line=bufr.readLine())!=null)
{
ta.append(line+"\r\n");
}
s.close();
}
public static void main(String[] args)
{
new MyIEByGUI();
}
}
URL-URLConnection
import java.net.*;
class URLDemo
{
public static void main(String[] args) throws MalformedURLException
{
URL url = new URL("http://192.168.1.254/myweb/demo.html?name=haha&age=30");
System.out.println("getProtocol() :"+url.getProtocol());
System.out.println("getHost() :"+url.getHost());
System.out.println("getPort() :"+url.getPort());
System.out.println("getPath() :"+url.getPath());
System.out.println("getFile() :"+url.getFile());
System.out.println("getQuery() :"+url.getQuery());
/*int port = getPort();
if(port==-1)
port = 80;
getPort()==-1
*/
}
}
/*
String getFile()
获取此 URL 的文件名。
String getHost()
获取此 URL 的主机名(如果适用)。
String getPath()
获取此 URL 的路径部分。
int getPort()
获取此 URL 的端口号。
String getProtocol()
获取此 URL 的协议名称。
String getQuery()
获取此 URL 的查询部
*/
import java.net.*;
import java.io.*;
class URLConnectionDemo
{
public static void main(String[] args) throws Exception
{
URL url = new URL("http://192.168.1.254:8080/myweb/demo.html");
URLConnection conn = url.openConnection();
System.out.println(conn);
InputStream in = conn.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
}
}
小知识点
InetAddress 封装的是IP地址
InetSocketAddress 封装的是IP地址和端口
ServerSocket 可以建立端口
backlog 队列的最大长度(必须是大于0的正值)
域名解析
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
- 黑马程序员-网络编程-自定义服务端和客户端
- 『黑马程序员』---java--网络编程--客户端和服务端
- 黑马程序员_网络编程中的服务端与客户端
- 【黑马程序员】Socket编程实现服务端和客户端的交互
- 黑马程序员--10.网络编程--06.【Clinet_Server通信原理】【TCP_客户端和服务端会话】【阻塞式方法的详解】
- 黑马程序员_Java基础_网络编程_客户端服务端数据传输,交互,客户端请求服务原理,自定义浏览器,URL统一资源定位符
- 黑马程序员_Java基础_网络编程_TCP协议编程,客户端服务端程序
- 黑马程序员_模拟客户端和服务端
- QT网络编程:服务端和客户端编程
- JAVA--网络编程之服务端和客户端
- 黑马程序员_网络编程之客户端
- 27-网络编程-20-网络编程(常见客户端和服务端)
- Java基础-网络编程(浏览器客户端-自定义服务端)
- 黑马程序员-网络编程TCP练习(服务端)
- 《黑马程序员》 自定义tomcat服务端
- java网络编程 (客户端、服务端)
- 黑马程序员----GUI编程和网络编程
- 迟迟开始学习的网络编程,C语言客户端服务端,python客户端服务端和mini木马
- Hadoop控制输出文件命名
- offline和online的初步研究
- android添加边框
- 完全删除Oracle 10g
- struct sockaddr、struct sockaddr_in、htonl()、htons()及inet_ntoa()、inet_addr()
- 黑马程序员-网络编程-自定义服务端和客户端
- 搜索引擎:第一章布尔查询学习笔记
- kmp模板
- hdu 2844 Coins
- 【2008级的一些事】为妹妹选专业
- 开发黑莓应用作品心得体会
- oracle exp query使用解决-LRM-00101: 未知的参数名
- 手把手教你把Vim改装成一个IDE编程环境(图文)
- 第二开机动画的添加