导航:首页 > 编程语言 > javatcpipsocket

javatcpipsocket

发布时间:2022-09-10 00:19:15

Ⅰ tcp/ip方式的 socket接口,java能调用不

不太明白说的是什么,Java的话,只要是socket编程的话,是可以调用你的socket接口,如果是Java调用
c程序
的话,你就要先把c++弄成外置的库。
希望能帮到你,请采纳我的答案。

Ⅱ java编程中,Socket通信是怎么实现的

java编程对于Socket之间的通信过程如下:

服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。下面来看一些服务端与客户端通信的例子:

publicclassServer{

publicstaticvoidmain(Stringargs[])throwsIOException{
//为了简单起见,所有的异常信息都往外抛
intport=8899;
//定义一个ServerSocket监听在端口8899上
ServerSocketserver=newServerSocket(port);
//server尝试接收其他Socket的连接请求,server的accept方法是阻塞式的
Socketsocket=server.accept();
//跟客户端建立好连接之后,我们就可以获取socket的InputStream,并从中读取客户端发过来的信息了。
Readerreader=newInputStreamReader(socket.getInputStream());
charchars[]=newchar[64];
intlen;
StringBuildersb=newStringBuilder();
while((len=reader.read(chars))!=-1){
sb.append(newString(chars,0,len));
}
System.out.println("fromclient:"+sb);
reader.close();
socket.close();
server.close();
}

}
客户端代码
Java代码publicclassClient{

publicstaticvoidmain(Stringargs[])throwsException{
//为了简单起见,所有的异常都直接往外抛
Stringhost="127.0.0.1";//要连接的服务端IP地址
intport=8899;//要连接的服务端对应的监听端口
//与服务端建立连接
Socketclient=newSocket(host,port);
//建立连接后就可以往服务端写数据了
Writerwriter=newOutputStreamWriter(client.getOutputStream());
writer.write("HelloServer.");
writer.flush();//写完后要记得flush
writer.close();
client.close();
}

}

Ⅲ 针对Java 网络编程,有哪些比较好的书推荐

Java 网络编程,比较好的书:
ava TCPIP Socket编程(中文版) Java NIO (中文版) 中文的好理解

java 7 出了AIO 你有必要去网络了解下

Ⅳ java socket中的IP地址问题

127.0.0.1是表示自己本地IP ,也可以用localhost代替. socket编程也叫套接字编程.java里的socket我没用过,不过c#的倒看过! 通过tcp/ip连接的程序需要两个条件,IP和端口,然后通过SOCKET里的方法把他们转成16进制的套接字.另外是UDP式的,就是后来流行的P2P技术,不需要IP的套接字!

Ⅳ java socke编程中,scokt是基于tcp/ip,有这么段话是什么意思

应用层协议有http,SMTP,Telnet等,这些http协议是建立在tcp协议之上的,socket是对tcp/ip协议的封装,socket本身并不是协议,他只是对tcp/ip的抽象,是一个api,通过socket我们才能使用tcp/ip协议。不知道这样说楼主明白了没?

Ⅵ JAVA Socket 底层是怎样基于TCP/IP 实现的

首先必须明确:TCP/IP模型中有四层结构: 应用层(Application Layer)、传输层(Transport Layer)、网络层(Internet Layer
)、链路层(LinkLayer)
其中Ip协议(Internet Protocol)是位于网络层的,TCP协议时位于传输层的。通过Ip协议可以使可以使两台计算机使用同一种语言,从而允许Internet上连接不同类型的计算机和不同操作系统的网络。Ip协议只保证计算机能够接收和发送分组数据。当计算机要和远程的计算机建立连接时,TCP协议会让他们建立连接:用于发送和接收数据的虚拟电路。

套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”。针对一个特定的连接,每台机器上都有一个“套接字”,可以想象它们之间有一条虚拟的“线缆”。JAVA
有两个基于数据流的套接字类:ServerSocket,服务器用它“侦听”进入的连接;Socket,客户端用它初始一次连接。侦听套接字只能接收新的连接请求,不能接收实际的数据包,即ServerSocket不能接收实际的数据包。
套接字是基于TCP/IP实现的,它是用来提供一个访问TCP的服务接口,或者说套接字socket是TCP的应用编程接口API,通过它应用层就可以访问TCP提供的服务。
在JAVA中,我们用 ServerSocket、Socket类创建一个套接字连接,从套接字得到的结果是一个InputStream以及OutputStream对象,以便将连接作为一个IO流对象对待。通过IO流可以从流中读取数据或者写数据到流中,读写IO流会有异常IOException产生。

Ⅶ java中,用哪一个类来表示tcp协议的服务器socket对象

服务端监听:ServerSocket server=new ServerSocket(port);//port:绑定的端口号
Socket client=server.accept();//监听端口,一旦取得连接则获得客户端的socket连接对象client

客户端: Socket s=new Socket(ip,port);//要连接的服务器的ip以及端口号

如果正常连接上之后,socket的对象可以获得InputStream和OutputStreame,然后就可以进行通信了

完成通信之后,执行socket对象的close()方法关闭连接,完成一次完整的socket连接

Ⅷ JAVA socket基于TCP/IP协议编程,是这样写的JAVA代码,服务器端:I/O流和server

http://www.cnblogs.com/linzheng/archive/2011/01/23/1942328.html 对照的例子 亲手写一个 好好阅读文档 很容易就学会了

Ⅸ Java TCP/IP协议的Socket如何设置端口复用

你的其中一端的连接没有被及时释放掉的原因是:你没有顺利地进行TCP连接关闭的流程。最近我就因为这个问题头疼了好久,现在终于找到真正的原因和解决办法了!关键点是:在调用close之前先发送一次数据(例如,out.write(0);)。接下来我用通俗的语言来阐述原因。

如果你两端的程序都是在传送完数据后直接调用Socket的close方法断开连接的话,这就会有一个调用close方法谁先谁后的问题,先调用者是主动关闭TCP连接的那一方,而后调用者就是被动关闭TCP连接的那一方。

关闭TCP连接的过程中,双方总共有3个报文需要发送,主动关闭方只需发送1个报文,就是断开请求的报文,被动关闭方要发送2个报文,分别是 回应主动关闭方发来的断开请求报文的第一次确认报文和 第二次确认报文,第二次的确认报文用来确认已经没有数据需要发送了。

主动关闭方发送了断开请求报文后,就进入了等待被动关闭方发送确认报文的状态,一般情况下,被动关闭方马上就会发送第一次确认报文。主动关闭方收到第一次确认报文后,就会等被动关闭方的第二次确认报文,直到超时,套接字资源被操作系统回收(P.S. 虽然书上不是这么说的,但是实际的OS就是这么处理的,原因下面再说)。此时如果被动关闭方发送了第二次确认报文,整个TCP连接关闭流程就顺利结束了,所有资源就会被OS回收。

重点来了,问题在于,作为被动关闭方的程序中,在主动关闭方等待被动关闭方发送第二次确认报文时,就算执行了Socket的close也不会发送第二次确认报文,只有向主动关闭方发送数据(任意)后,被动关闭方才会发送第二次确认报文,整个流程才能顺利进行,TCP连接的资源才会被释放,下次才能重复使用同个套接字。

我自己实验出来的结果是:在两端的代码中(只有一端发送一端接收),都只使用

out.write(0);
me.close();

进行TCP连接的断开,out是Socket的OutputStream,me是已连接的Socket对象。结果,无论重复多少次运行,都能不间断地顺利运行,每次运行结束后,用资源监视器看TCP连接情况,都看到所使用的连接资源都已经被释放,并没有等待2MSL时间后才被释放,所以实际的OS的处理跟理论上的不一样。所以你的程序要等一段时间后才能再次使用同个端口并不是因为存在2MSL的等待时间,而是因为TCP连接关闭流程没有顺利进行,但是所使用的进程已经退出,OS就会自动帮你回收资源,不过需要等超时后才处理。(P.S. 我测试的OS是Windows)

如果两端的程序断开TCP连接时都是直接开始断开的过程而没有延时的话,谁是主动关闭方就不确定,两端的程序中的断开TCP连接的代码就得有发送数据的部分,如果其中有一方延时了,那延时的一方就有很大的概率是被动关闭方,另一方在调用close前就不需要发送数据了。

还有,就算TCP连接关闭的流程顺利进行,但是,下次使用同个套接字(两端套接字跟之前的相同)前得延时一下,几百毫秒就够了(具体自己调整),因为OS回收套接字资源是需要时间的,关闭TCP连接后就立马创建两端套接字跟所关闭的连接的两端套接字相同的连接也有可能因为仍然被占用而报错。

阅读全文

与javatcpipsocket相关的资料

热点内容
编译器原理与实现书 浏览:708
dos选择命令 浏览:16
apm固件编译到单片机 浏览:120
联通深蓝卡都包含什么app 浏览:263
如何判断网络服务器正常 浏览:649
路由器搭桥远端服务器地址是什么 浏览:515
编译动态库时会连接依赖库吗 浏览:707
淘宝手机加密是随机的吗 浏览:672
解压包子怎么装饰 浏览:585
四个数凑24算法 浏览:676
哪一种不是vi编译器的模式 浏览:169
xp在此处打开命令窗口 浏览:128
代码编译运行用什么软件 浏览:999
动态库在程序编译时会被连接到 浏览:761
python超简单编程 浏览:260
获取命令方 浏览:977
怎样制作文件夹和图片 浏览:60
调研编译写信息 浏览:861
python冯诺依曼 浏览:419
同时安装多个app有什么影响 浏览:254