java网络编程中如何知道对方发消息过来了
3个回答
展开全部
可以参考一下这段代码
//1. 构造ServerSocket实例,指定服务端口。
ServerSocket servSock = new ServerSocket(servPort);
while(true)
{
// 2.调用accept方法,建立和客户端的连接
Socket clntSock = servSock.accept();
SocketAddress clientAddress =
clntSock.getRemoteSocketAddress();
System.out.println("Handling client at " + clientAddress);
// 3. 获取连接的InputStream,OutputStream来进行数据读写
InputStream in = clntSock.getInputStream();
OutputStream out = clntSock.getOutputStream();
while((recvMsgSize = in.read(receiveBuf)) != -1)
{
out.write(receiveBuf, 0, recvMsgSize);
}
// 4.操作结束,关闭socket.
clntSock.close();
}
展开全部
先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取回应的数据,显示在界面上。
主要是
在服务器端,主要是启动Socket和监听线程。
#define DEFAULT_PORT 2000
void CServerDlg::OnStart()
{
sockaddr_in local;
DWORD dwThreadID = 0;
local.sin_family=AF_INET;
//设置的端口为DEFAULT_PORT。
local.sin_port=htons(DEFAULT_PORT);
//IP地址设置成INADDR_ANY,让系统自动获取本机的IP地址。
local.sin_addr.S_un.S_addr=INADDR_ANY;
//初始化Socket
m_Listening = socket(AF_INET,SOCK_STREAM,0);
if(m_Listening == INVALID_SOCKET)
{
return ;
}
//将本地地址绑定到所创建的套接字上
if(bind(m_Listening,(LPSOCKADDR)&local,sizeof(local)) == SOCKET_ERROR )
{
closesocket(m_Listening);
return ;
}
//创建监听线程,这样也能响应界面上操作。
m_hListenThread = ::CreateThread(NULL,0,ListenThread,this,0,&dwThreadID);
m_StartBtn.EnableWindow(FALSE);
m_StopBtn.EnableWindow(TRUE);
}
主要是
在服务器端,主要是启动Socket和监听线程。
#define DEFAULT_PORT 2000
void CServerDlg::OnStart()
{
sockaddr_in local;
DWORD dwThreadID = 0;
local.sin_family=AF_INET;
//设置的端口为DEFAULT_PORT。
local.sin_port=htons(DEFAULT_PORT);
//IP地址设置成INADDR_ANY,让系统自动获取本机的IP地址。
local.sin_addr.S_un.S_addr=INADDR_ANY;
//初始化Socket
m_Listening = socket(AF_INET,SOCK_STREAM,0);
if(m_Listening == INVALID_SOCKET)
{
return ;
}
//将本地地址绑定到所创建的套接字上
if(bind(m_Listening,(LPSOCKADDR)&local,sizeof(local)) == SOCKET_ERROR )
{
closesocket(m_Listening);
return ;
}
//创建监听线程,这样也能响应界面上操作。
m_hListenThread = ::CreateThread(NULL,0,ListenThread,this,0,&dwThreadID);
m_StartBtn.EnableWindow(FALSE);
m_StopBtn.EnableWindow(TRUE);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当有客户端连接到服务端的时候会得到一个SOCKET对象,用这个对象取得输入流,并读取,如果客户端有消息过来,就会读到客户端发送过来的消息。
追问
对啊 这消息能自动显示么
追答
你能得到这个消息,后面不就是你想怎么办怎么办了么。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询