社区
Java SE
帖子详情
SOCKET如何同时收发?
x3302
2006-06-01 06:35:21
我刚接触SOCKET
网上的通过SOCKET连接的C/S结构的简单聊天程序
大多是采取一问一答形式
即client对server说完话后,要等待server回应才可以继续说
反之亦然
如何可以做到双方可以随时发话?(不用UDP连接方式实现)
设想是client建两个socket分别进行收和发
但发现server好象很难识别哪个socket是做什么的。
谁有好的方法,告诉一下,谢谢!
...全文
669
5
打赏
收藏
SOCKET如何同时收发?
我刚接触SOCKET 网上的通过SOCKET连接的C/S结构的简单聊天程序 大多是采取一问一答形式 即client对server说完话后,要等待server回应才可以继续说 反之亦然 如何可以做到双方可以随时发话?(不用UDP连接方式实现) 设想是client建两个socket分别进行收和发 但发现server好象很难识别哪个socket是做什么的。 谁有好的方法,告诉一下,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
x3302
2006-06-01
打赏
举报
回复
我形容例子的也可以简单抽象成
server每1秒向client发出信息,client每1秒都显示这信息
client每10秒向server发出信息,server再刚才每1秒发出消息的同时
每隔10秒显示client发出的信息
x3302
2006-06-01
打赏
举报
回复
To: afgkidy(酷斯拉迪)
你这种方法还是一收一发方式的。
我把client那的sleep设成了10秒
那么server端还是要等client端的线程完成一个循环才会执行server端那些代码
我要的效果是,例如:
我先在client端发:“A1”回车;“B1”回车;“C1”回车。
server端在可以输入的状态下,仍然可以显示出“A1”,“B1”,“C1”。
你现在的程序是等于,在client端发了“A1”回车后,client端会阻塞,不能输入“B1”等
输了“A1”后,server现在会马上显示“A1”,但client要等server回话才可以继续输入“B1”等。
afgkidy
2006-06-01
打赏
举报
回复
给个我的程序参考下:程序能实现你所要的要求,自己理解吧
服务器:
import java.net.ServerSocket;
import java.net.Socket;
import java.net.InetAddress;
import java.io.IOException;
import java.io.DataInputStream;
import java.io.DataOutputStream;
public class ServerTest implements Runnable
{
Thread thread;
public void run()
{
try
{
String str;
//创建服务器Socket并侦听端口8888
ServerSocket serverSocket=new ServerSocket (8888);
//接受客户端的连接
Socket socket=serverSocket.accept();
DataInputStream inStream=new DataInputStream(socket.getInputStream());
DataOutputStream outStream=new DataOutputStream (socket.getOutputStream());
InetAddress addr=socket.getInetAddress();
System.out.println("接收到来自 "+addr.getHostAddress()+" 的连接");
//发送响应信息
outStream.writeUTF("1");
while (true)
{
//接收客户端的信息
str=inStream.readUTF();
System.out.println("客户端信息: "+str);
str=String.valueOf(Integer.parseInt(str)+1);
//向客户端发送信息
outStream.writeUTF(str);
}
}
catch (IOException e)
{
System.out.println(e);
}
}
void start ()
{
thread=new Thread (this);
//线程开始
thread.start();
}
public static void main(String[] args)
{
ServerTest app=new ServerTest();
app.start();
}
客户端:
import java.net.Socket;
import java.net.InetAddress;
import java.io.DataOutputStream;
import java.io.DataInputStream;
import java.io.IOException;
public class ClientTest implements Runnable
{
Thread thread;
public void run()
{
Socket socket;
DataOutputStream outStream;
DataInputStream inStream;
try
{
//连接到本地机的8888端口
socket=new Socket("localhost",8888);
outStream=new DataOutputStream (socket.getOutputStream());
inStream=new DataInputStream (socket.getInputStream());
InetAddress addr=socket.getInetAddress();
System.out.println("连接到服务器 "+addr.getHostAddress());
while (true)
{
//从服务器读取数据
String str=inStream.readUTF();
System.out.println("服务器端信息: "+str);
thread.sleep(1000);
str=String.valueOf(Integer.parseInt(str)+1);
//向服务器发送数据
outStream.writeUTF(str);
}
}
catch (IOException e)
{
System.out.println(e);
}
catch (InterruptedException e)
{
System.out.println(e);
}
}
void start ()
{
thread=new Thread(this);
//打开线程
thread.start();
}
public static void main(String[] args)
{
ClientTest app=new ClientTest();
app.start();
}
flybirdlc
2006-06-01
打赏
举报
回复
就是 socket 和socketserver 写在一个程序里~
flybirdlc
2006-06-01
打赏
举报
回复
你写程序的时候要写一个 socket 还要写一个 socketserver
一个用来发,一个用来收。socketserver 写在循环里,让他永远不停的接收
然后socket 写在触发里
这样就可以了~
java
socket
通讯例程 多线程读写 可以同时
收发
不同终端的消息
在主线程中通过控制台读取键盘输入时,会产生阻塞。故另外开启一个线程,用于接受客户端的
socket
消息。服务器在收到一个
socket
连接之后,把该
socket
保存到队列中,并对队列中的每个
socket
开启各自的读写线程。测试可以在不同控制台运行server和client,服务器接收消息时,会显示消息来源
JAVA
socket
收发
数据,并支持断网自动连接
实现
socket
客户端
收发
数据,并支持客户端断网或服务器重启后重连
Socket
编程快速入门
本课程将理本课程将理啊 论结合实践,带你从零开始,系统学习
Socket
编程技术,让
Socket
的学习不再那么零散与难以掌握,同时会提炼出
Socket
网络传输的核心思想与构架,并带你踩坑出坑,增加你的分析与处理问题的啊aas...
C/C++多线程文件传输v2.2完整源码(断点续传 网络消息
收发
高效率 界面与后台线程交互)
2.2完整源码版,包括工程文件保证可以编译通过 多线程
socket
文件传输/支持断点续传/
收发
消息/点对多点 使用阻塞方式的
socket
,使用多线程,有较高的性能. 在局域网中测试达到极限速度. 支持断点续传. 服务端可同时接收多个文件. 传输文件的同时可以发送网络消息. 如有问题,请与我联系: hongxing777@gmail.com
【Python】
socket
同时
收发
与多线程防止input阻塞
【Python】
socket
同时
收发
与多线程防止input阻塞 采薇采薇,薇亦作止。曰归曰归,岁亦莫止。靡室靡家,玁狁之故。不遑启居,玁狁之故。 采薇采薇,薇亦柔止。曰归曰归,心亦忧止。忧心烈烈,载饥载渴。我戍未定,靡使归聘。 采薇采薇,薇亦刚止。曰归曰归,岁亦阳止。王事靡盬,不遑启处。忧心孔疚,我行不来。 彼尔维何?维常之华。彼路斯何?君子之车。戎车既驾,四牡业业。岂敢定居?一月三捷。 驾彼四牡...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章