java tcp中客户端不能接收到服务器的信息!
inreadLine(); 是要读到有换行符才结束的,在这个之前都是堵塞的
你在你发送的
outwrite("quit"); ---->>outwrite("quit/r");
outwrite("链接用时"+(end-start)+"毫秒/r"); //计算该客户链接的时间
没有听懂楼主的话,做以下回答,不满意,不用采纳。
获取主机名和IP
使用Java IO,进行写入到指定位置。示例代码如下:
public void writerClassCode(String path, StringBuffer sb) {
File file = new File(path);//指定路径,如 D:\\Download\\javatxt
FileWriter writer;
try {
writer = new FileWriter(file);
writerwrite(sbtoString());//sb为主机名和IP,这个简写有意思吧!哈哈
writerclose();
} catch (IOException e) {
eprintStackTrace();
}
Systemoutprintln("执行完毕");
}
1jdbcproperties
driver=commicrosoftjdbcsqlserverSQLServerDriver
url=jdbc:microsoft:sqlserver://Ip地址:1433;databaseName=test
user=test
password=test
2一个Servlet
import javaioPrintStream;
import javasql;
import javautilResourceBundle;
public class DBOperator
{
public DBOperator()
{
}
public static void main(String args[])
{
Connection con = getConnection();
Systemoutprintln("connection success");
closeConnection(con);
Systemoutprintln("close success");
}
public static Connection getConnection()
{
try
{
return DriverManagergetConnection(url, user,
password);
}
catch(SQLException e)
{
eprintStackTrace();
}
return null;
}
public static void closeConnection(Connection con)
{
try
{
if(con != null)
conclose();
}
catch(SQLException e)
{
eprintStackTrace();
}
}
private static String url;
private static String user;
private static String password;
static
{
ResourceBundle bundle = ResourceBundlegetBundle("路径");
try
{
ClassforName(bundlegetString("driver"));
}
catch(ClassNotFoundException e)
{
eprintStackTrace();
}
url = bundlegetString("url");
user = bundlegetString("user");
password = bundlegetString("password");
}
}
网络通信可分为两种模式:TCP有连接的通信
UDP无连接的通信
依照上述的问题我可以理解为你是要进行有连接的通信。是要经过三次握手才能实现可靠的连接
第一次:建立连接时三次握手,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN(Synchronize Sequence Numbers)同步序列号。
服务器端即可使用:
Socket s=serverSocketaccept();
String clientIP=sgetInetAddress()toString();
这就实现了java服务器端获取到连接此服务器的客户端的IP了,你若想实现获取所有连接此服务器的客户端的IP,你可以把每次accept()返回的socket放进全局的Vector里面,然后在遍历这个vector方法就同上代码咯……
登陆验证成功后存入session,想要获取的话掉通过session获取
sessionput(key, value);
object object = sessionget(key);
用户信息一般放在session里面
requestgetHeader(“User-agent”)返回客户端浏览器的版本号、类型
getHeader(String name):获得http协议定义的传送文件头信息,
request getMethod():获得客户端向服务器端传送数据的方法有GET、POST、PUT等类型
request getRequestURI():获得发出请求字符串的客户端地址
request getServletPath():获得客户端所请求的脚本文件的文件路径
request getServerName():获得服务器的名字
requestgetServerPort():获得服务器的端口号
requestgetRemoteAddr():获得客户端的IP地址
requestgetRemoteHost():获得客户端电脑的名字,若失败,则返回客户端电脑的IP地址
requestgetProtocol():
requestgetHeaderNames():返回所有request header的名字,结果集是一个Enumeration(枚举)类的实例
//也许有你想要的,前提是在项目布署运行起来后,在servlet中或controller中运行以下代码即可。
Systemoutprintln(thisgetClass()getResource("/"));//结果:file:/E:/work/service/tomcat7065/webapps/mvc_adminlte/WEB-INF/classes/
Systemoutprintln(SystemgetProperty("catalinahome"));//结果:E:\work\service\tomcat7065
SystemgetProperty("userdir");//结果:E:\work\service\tomcat7065\bin
Systemoutprintln(requestgetSession()getServletContext()getRealPath("/"));//结果:E:\work\service\tomcat7065\webapps\你的项目名称\
希望能帮到你!
0条评论