您现在的位置是:主页 > news > 腾讯企点客服/河南网站优化公司哪家好
腾讯企点客服/河南网站优化公司哪家好
admin2025/4/29 20:48:06【news】
简介腾讯企点客服,河南网站优化公司哪家好,推广途径,网站建设费属于哪个会计科目1.分别写一个socket客户端和serversocket服务端相互通信 MyServerSocket 类: 这里有一个坑,这里要记住在末尾调用socket.close()方法来关闭socket,如果不写socket.close()方法就会立刻被jvm清理掉。而close()方法会等所有请求完成后在关闭so…
腾讯企点客服,河南网站优化公司哪家好,推广途径,网站建设费属于哪个会计科目1.分别写一个socket客户端和serversocket服务端相互通信 MyServerSocket 类:
这里有一个坑,这里要记住在末尾调用socket.close()方法来关闭socket,如果不写socket.close()方法就会立刻被jvm清理掉。而close()方法会等所有请求完成后在关闭so…
1.分别写一个socket客户端和serversocket服务端相互通信
MyServerSocket 类:
- 这里有一个坑,这里要记住在末尾调用socket.close()方法来关闭socket,如果不写socket.close()方法就会立刻被jvm清理掉。而close()方法会等所有请求完成后在关闭socket。
package com.itholmes.socket;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class MyServerSocket {public static void main(String[] args) throws IOException {ServerSocket server = new ServerSocket(9090);Socket socket = server.accept();InputStream in = socket.getInputStream();OutputStream out = socket.getOutputStream();byte[] b = new byte[1024];int read = in.read(b);StringBuffer buffer = new StringBuffer();while(read!=-1) {String s = new String(b,0,read);buffer.append(s);read = in.read(b);}System.out.println(buffer.toString());socket.shutdownInput();out.write("server发送的数据".getBytes());System.out.println();//这里要记住关闭socket,//如果不写socket.close()方法就会立刻被jvm清理掉。//而close()方法会等所有请求完成后在关闭socket。socket.close();}
}
MyClientSocket类:
package com.itholmes.socket;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;public class MyClientSocket {public static void main(String[] args) throws UnknownHostException, IOException {Socket socket = new Socket("localhost",9090);InputStream in = socket.getInputStream();OutputStream out = socket.getOutputStream();out.write("client发送的数据".getBytes());socket.shutdownOutput();byte[] b = new byte[1024];int read = in.read(b);StringBuffer buffer = new StringBuffer();while(read != -1) {String s = new String(b,0,read);buffer.append(s);read = in.read(b);}System.out.println(buffer.toString());socket.close();}
}
2.写一个socket客户端向tomcat的servlet发送数据
在这就直接上代码了,首先我创建了一个普通的java项目,里面写了两个类,一个发送get方法的Socket类,另一个是发送post方法的Socket的类。
ClientSocket.java(get方法)代码如下:
package com.socket.test;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;public class ClientSocket {public static void main(String[] args) throws Exception, IOException {// TODO Auto-generated method stubSocket socket = new Socket("127.0.0.1", 8080);InputStream in = socket.getInputStream();OutputStream out = socket.getOutputStream();// 发送数据的格式,注意url要自己定义!!不能按照我的来!String url = "GET /WebTest07/socket?get1=123&get2=456 HTTP/1.1\r\n" + "Host:localhost:8080\r\n" + "\r\n";out.write(url.getBytes());// 接受Servlet发送过来的数据byte[] b = new byte[1024];int count = in.read(b);while (count != -1) {System.out.println("Servlet响应过来的信息:" + new String(b, 0, count));count = in.read(b);}socket.close();}}
ClientSocketPost.java(post方法)代码如下:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.URLEncoder;
import java.net.UnknownHostException;public class ClientSocketPost {public static void main(String[] args) throws Exception, IOException {// TODO Auto-generated method stubSocket socket = new Socket("127.0.0.1", 8080);InputStream in = socket.getInputStream();OutputStream out = socket.getOutputStream();// POST数据 发送的数据的格式时,必须要定义发送的格式// Content-Type: application/x-www-form-urlencoded// Content-Length:23String form = "username=zhangsan&password=123";String url = "POST /WebTest07/socket HTTP/1.1\r\n"+ "Host:localhost:8080\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length:30\r\n"+ "\r\n" + form;out.write(url.getBytes());out.flush();// 接受Servlet发送过来的数据byte[] b = new byte[1024];int count = in.read(b);while (count != -1) {System.out.println("Servlet响应过来的信息:" + new String(b, 0, count));count = in.read(b);}socket.close();}}
设置好上面的类,我们就设置Servlet程序内部的类,我直接创建了一个SocketTestServer类作为服务器来接受,注意别忘记配置Web.xml的内容。
SocketTestServer.java(Servlet服务器的java类) 代码如下:
两个方法doget和dopost方法一个处理get请求,一个处理post请求。
package com.socket.test;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Enumeration;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class SocketTestServer extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println("get -- Socket已经访问过");response.setContentType("text/html; charset=utf-8");InputStream in = request.getInputStream();OutputStream out = response.getOutputStream();String str1 = request.getParameter("username");String str2 = request.getParameter("password");System.out.println("客户端发送过来的参数值为:" + str1);System.out.println("客户端发送过来的参数值为:" + str2);// 像Socket客户端发送数据String str = "我是Servlet,你可以发表演讲了";out.write(str.getBytes());}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println("post -- Socket已经访问过");response.setContentType("text/html;charset=UTF-8");String str2 = request.getParameter("username");String str3 = request.getParameter("password");System.out.println("username为:" + str2);System.out.println("password为:" + str3);// 需要注意我们获取到的http协议内容全部存储到了request中,因此我们没必要再进行一个获取操作,如果再进行一个获取操作参数什么的也都是null而已。// InputStream in = request.getInputStream();// OutputStream out = response.getOutputStream();System.out.println("方法名:" + request.getMethod());System.out.println("ContentType类型:" + request.getContentType());System.out.println("ContentLength值为:" + request.getContentLength());PrintWriter writer = response.getWriter();writer.write("ok");}}
Web.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>WebTest07</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><!-- 下面就是Servelt的SocketTestServer类的配置 --><servlet><description></description><display-name>SocketTestServer</display-name><servlet-name>SocketTestServer</servlet-name><servlet-class>com.socket.test.SocketTestServer</servlet-class></servlet><servlet-mapping><servlet-name>SocketTestServer</servlet-name><url-pattern>/socket</url-pattern></servlet-mapping></web-app>
完成上面步骤我们,将Servlet工程放到Tomcat中,随后启动Tomcat。
注意tomcat的配置要选择第二种!
启动Tomcat后,我们就可以来测试了,分别启动ClientSocket类和ClientSocketPost类,来测试get和post的http协议接受响应,查看控制台信息就完成了。