代码如下:
//////////////////////////////////winsock server////////////////////////////////////
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#include <stdio.h>int main()
{
WSADATA wsaData;
WSAStartup(0x0202, &wsaData); char Hostname[260];
gethostname(Hostname, 260);
hostent *pHostEnt;
pHostEnt = gethostbyname(Hostname); SOCKET m_ConnSocket = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_IP, NULL, 0, WSA_FLAG_OVERLAPPED);
if (m_ConnSocket == INVALID_SOCKET) return false;
SOCKADDR_IN ConnAddr;
ConnAddr.sin_family = AF_INET;
ConnAddr.sin_addr.s_addr = *((DWORD*)pHostEnt->h_addr_list[0]);
ConnAddr.sin_port =6677;

if (bind(m_ConnSocket, (PSOCKADDR)&ConnAddr, sizeof(SOCKADDR_IN)) ==   SOCKET_ERROR) return false;
if (listen(m_ConnSocket, 5) == SOCKET_ERROR) return false; SOCKET accept;
SOCKADDR_IN ConnIP;
int iSize = sizeof(SOCKADDR_IN);
while (true)
{
if ((accept = WSAAccept(m_ConnSocket, (SOCKADDR*)&ConnIP, &iSize, NULL, 0)) == SOCKET_ERROR)
{
continue;
}
else
{
break;
//CreateThread(NULL,0,);
}
}
char MSG[20];
strcpy(MSG,"hello");
WSABUF buf;
buf.buf = MSG;
buf.len = 20; DWORD bytesSent; WSAOVERLAPPED wsolp;
ZeroMemory(&wsolp,sizeof(WSAOVERLAPPED));
if(WSASend(accept,&buf,1,&bytesSent,0, &wsolp, NULL) == SOCKET_ERROR)
{
sprintf("%s","send failed");
}
//WSARecv();

closesocket(accept);
closesocket(m_ConnSocket); return 0;

}/////////////////////////////////////java socket client//////////////////////////////
import java.net.*;
import java.io.*;public class client{
static Socket server;public static void main(String[] args)throws Exception{
  server=new Socket(InetAddress.getLocalHost(),6677);  BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
  PrintWriter out=new PrintWriter(server.getOutputStream());
  BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
     
  System.out.println(in.readLine());
  server.close();
}
}///////////////////////////////////////////////////////////////////
客户端提示:connection refused;请高手指点;多谢

解决方案 »

  1.   

    SOCKET m_ConnSocket = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_IP, NULL, 0, WSA_FLAG_OVERLAPPED);
    ///////////////////////////////////////////////////////////////////////////////
    SOCKET m_ConnSocket = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED);或
    SOCKET m_ConnSocket = WSASocket(AF_INET, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED);
      

  2.   

    谢谢你的回复;
    我按你的办法来修改,还是没解决问题;
    最后同学帮忙解决了,问题在这里:
    ConnAddr.sin_port =6677;
    改为
    ConnAddr.sin_port =htons(6677);没有转换为网络字节顺序;