socket网络编程
客户端与服务端通过socket套字节连接后都会返回一个实例对象,分别保存这个对象,就相当于保存的对方的地址。不同的客户端连接到服务器,得到的对象都是不同的。服务端要发信息直接拿这个对象进行操作就可以了。
很久没写了,具体名称记不起来了,思路就是这样的
你好,我是用Listlist=newList();保存对象的,但我不知道怎么根据不同的客户发送不同的信息来告诉客户端已经成功连接服务器了!,有这样的项目么发个给我看看...
这个就要靠你自定义的协议了啊,比如你定义登录时客户端发送“denglu_id”到服务端来登录,服务端接收后解析知道是客户端要登录,就保存套字节对象并用这个对象给客户端返回值
今天玩了一款游戏叫做你画我猜,萌生了用java编写它的想法。
其实这个问题你应该先想一下socket到底是一个什么东西,在网络编程中socket到底用来做什么的。socket:在操作系统内核中它代表网络连接的一个端点(endpoint),在应用程序中它代表一个打开的文件。socketpair唯一确定的一条网络连接,socketpair就是客户端socket和服务端socket的一个组合。也就是客户端ip和port与服务端ip和port的组合。一条网络连接也就是一条通信的信道,tcp连接代表的信道是全双工的。以信道来讲,逻辑上就存在两个管道来代表输出与输入来发送和接收信息。
那么在应用程序上我们就可以拿到这2个管道来完成socket之间的通信。
以你的应用来看输出流fos就代表着图中的红色管道,那么在服务端就应该是这个样的。
ScoketconnSock=serverSocket.accept();//connSock代表着服务端的Socket
InputStreamis=connSock.getInputStream();//输入流is代表图中的红色管道
OutputStreaos=connSock.getOutputStream();//输出流os代表图中的绿色管道
在服务端有一个字节缓冲区来存放从is读取的字节数据
byte[]buffer=newbyte[1024];
然后服务端读取数据来填充这个字节缓冲区
is.read(buffer);//比如这样
然后就根据你的需求来操作这个buffer了。
然后把处理过后的数据通过os发送给客户端。os就是图中的那个绿色管道
os.write(处理过后的数据);
谢谢您的详细讲解。我对于原理不是很懂,但是基本的运用会一点。我知道怎么传输字符串,但是图片跟字符串不太一样,而且这里要做的是一个渐进的,你在客户端画多少,服务器就接收多少,并且同时传输到其它客户端。java.net里面有没有提供这样的类来实现类似的功能呢?
我刚玩百度知道,也没有分可以给你。只能说声谢谢。
本回答由提问者推荐
vc++ socket编程基础
改下对话框资源的ID号。
socket接口网络编程
服务器 package test; import java.net.*; import java.io.*; public class kkmultiserver { private socket socket=null; private serversocket ss; string ip="192.168.1.182"; int port =8001; thread trd=null; public void start() { try { ss=new serversocket(port,20,inetaddress.getbyname(ip)); system.out.println("服务器建立等待用户连接!"); while(true) { socket=ss.accept(); system.out.println("用户连接成功"); trd=new thread(new guestserver(socket)); trd.start(); } } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } } public static void main(string args[]) { new kkmultiserver().start(); } }