导航:首页 > 编程语言 > javasocket库

javasocket库

发布时间:2023-02-12 23:30:24

java socket实现两个客户段或多个客户端之间通信,该怎么解决

javasocket有两种方式。一种是UDP这个可以直连,不需要服务器。一种是TCP这个是肯定要能过服务器来通信的。所以你说的。链接建立完毕后不再通过服务器!这个可以实现,但会麻烦一些。1.先说一下简单的点的吧。用TCP的方式。你所有的消息都是发给服务器。包含你的IP及通信端口,及对方的IP及通信端口信息。当然这些是隐藏在数据报中的。这样由服务器来进行分发。2.你说的那种方式有点类似TCP与UDP混合。首先启动一个SERVER然后每一个客户端,先要登陆SERVER,并在server上记录下你的IP及通信端口信息,如果你要连接某一个客户端。先要向服务器发出一个申请,获得到方的IP及端口信息,然后进行UDP连接。连接上以后,就是直接发送息,不需要服务器了。javasocket的东西,以前做过一些,所以有思路,但没有现成的代码。有问题再联系。

linux用java socket与c的socket通信乱码问题

应该就是字符集问题。
首先要确定Linux返回的数据中,采用了那种编码方式,如:GBK。
对应的,在Java一端,将字符串信息转换成byte数组并写入Socket,读出的数据也转换成字符串,
如:
String s = "中文" ;
sockoutputstream.write (s.getBytes ("GBK")) ;

读出来时候,
byte [] buf = sockinputStream.read ()

String s = new String (buf, "GBK") ;

这样就可以了。

Ⅲ java中的socket是什么意思

所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。
重要的Socket API:
java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK-1.3文档。
. Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。"阻塞"是一个术语,它使程序运行暂时"停留"在这个地方,直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。
. getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。
. getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。
注意:其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。
2ServerSocket类例子编辑

package com.lanber.socket;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
/**
* 注意:Socket的发送与接收是需要同步进行的,即客户端发送一条信息,服务器必需先接收这条信息,
* 而后才可以向客户端发送信息,否则将会有运行时出错。
* @param args
*/
public static void main(String[] args) {
ServerSocket ss = null;
try {
ss = new ServerSocket(8888);
//服务器接收到客户端的数据后,创建与此客户端对话的Socket
Socket socket = ss.accept();
//用于向客户端发送数据的输出流
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
//用于接收客户端发来的数据的输入流
DataInputStream dis = new DataInputStream(socket.getInputStream());
System.out.println("服务器接收到客户端的连接请求:" + dis.readUTF());
//服务器向客户端发送连接成功确认信息
dos.writeUTF("接受连接请求,连接成功!");
//不需要继续使用此连接时,关闭连接
socket.close();
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

3客户端的例子编辑
package com.lanber.socket;
importjava.io.DataInputStream;
import java.io.DataOutputStream;
importjava.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientDemo {
/**
* @param args
*/
public static void main(String[] args) {
Socket socket = null;
try {
socket = new Socket("localhost",8888);
//获取输出流,用于客户端向服务器端发送数据
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
//获取输入流,用于接收服务器端发送来的数据
DataInputStream dis = new DataInputStream(socket.getInputStream());
//客户端向服务器端发送数据
dos.writeUTF("我是客户端,请求连接!");
//打印出从服务器端接收到的数据
System.out.println(dis.readUTF());
//不需要继续使用此连接时,记得关闭哦
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

Ⅳ java socket 服务器端如何根据客户端输入实现对数据库的增删改查求实例,谢谢大家了!

写一个操作的协议
如添加的时候,使用
add;customer;张三;4404111111111111111111;2014-04-09;200
服务器接收到解析字符串,再使用相应的操作

Ⅳ java中Socket通信

你加了高分我才贴
----------------具体是: Client-A发送消息向Server:消息包括内容+流向(Client-B的地址)+消息来源地址 Server接收后再把消息+来源地址发给Client-B

Ⅵ java socket有什么用

socket是用于网络通信的,你想要跟别人联系都得通过socket占据端口来与别人通信,比如QQ的聊天,就是用socket来发送消息的

Ⅶ C++用socket 做服务端,Java做客户端 可以通信吗

可以通信的,因为C++和JAVA都是使用SOCKET编程,因此C++写的服务器,JAVA做客户端是能够通信的。我也经常使用python搭建一个服务器,因为PYTHON提供了SOCKET库,这个库跨平台也很好用。我的同事在写温湿度监控的后台服务器(java),就是连接到我用python写的服务器进行测试的。
如果说你的通信不上,那么先要检测,能否互相ping通,其次搞清楚C++服务器在局域网还是外网,如果是自己搭的服务器还需要考虑这个端口映射问题。如果这些都没问题就是通信不上,你就要通过wireshark等抓包工具查一下TCP/IP的三次握手了。一般来说,调用socket的API时系统都会通过返回值告诉你实际连接上没有,如果是通信不上,多半是通信协议这一块没做好。
如果有不懂的,欢迎进一步提问

Ⅷ 如何用把Socket接受来的数据插入到数据库中java

java数据库编程要用JDBC
JDBC用法很简单,创建一个以JDBC连接数据库的程序,包含7个步骤:
1、加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),
这通过java.lang.Class类的静态方法forName(String className)实现。
例如:
try{
//加载MySql的驱动类
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驱动程序类 ,加载驱动失败!");
e.printStackTrace() ;
}
成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL
•连接URL定义了连接数据库时的协议、子协议、数据源标识。
•书写形式:协议:子协议:数据源标识
协议:在JDBC中总是以jdbc开始
子协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端口。
例如:(MySql的连接URL)
jdbc:mysql:
//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
3、创建数据库的连接
•要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,
该对象就代表一个数据库的连接。
•使用DriverManager的getConnectin(String url , String username ,
String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和
密码来获得。
例如:
//连接MySql数据库,用户名和密码都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("数据库连接失败!");
se.printStackTrace() ;
}
4、创建一个Statement
•要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3
种类型:
1、执行静态SQL语句。通常通过Statement实例实现。
2、执行动态SQL语句。通常通过PreparedStatement实例实现。
3、执行数据库存储过程。通常通过CallableStatement实例实现。
具体的实现方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt =
con.prepareCall("{CALL demoSp(? , ?)}") ;
5、执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate
和execute
1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句
,返回一个结果集(ResultSet)对象。
2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或
DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的
语句。
具体实现的代码:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、处理结果
两种情况:
1、执行更新返回的是本次操作影响到的记录数。
2、执行查询返回的结果是一个ResultSet对象。
• ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些
行中数据的访问。
• 使用结果集(ResultSet)对象的访问方法获取数据:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1) ; // 此方法比较高效
}
(列是从左到右编号的,并且从列1开始)
7、关闭JDBC对象
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声
明顺序相反:
1、关闭记录集
2、关闭声明
3、关闭连接对象
if(rs != null){ // 关闭记录集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 关闭声明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 关闭连接对象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}

阅读全文

与javasocket库相关的资料

热点内容
连涨启动源码 浏览:161
小奔运动app网络异常怎么回事 浏览:447
php开启压缩 浏览:303
服务器主机如何设置启动 浏览:282
linux配置网络命令 浏览:774
一张照片怎么制作视频app 浏览:908
pythonweb和php 浏览:976
电脑服务器地址ip地址 浏览:823
对矩阵压缩是为了 浏览:910
setfacl命令 浏览:172
linux子系统中断 浏览:342
linux查看进程ps 浏览:224
知识库系统php 浏览:623
小波变换压缩图像python 浏览:151
阿里巴巴程序员怎么月入百万 浏览:173
如何使用国外服务器 浏览:188
燃灯者pdf 浏览:468
编译器用数学吗 浏览:7
图形化apk反编译工具 浏览:48
考勤表加密怎么办 浏览:736