socket通信,client显示send成功但是server收不到任何东西??
// client
//
#include"stdafx.h"
#include<stdio.h>
#include<stdlib.h>
#include<winsock2.h>
int main()
{
WORD wVersionRequested;
WSADATA wsaData;
int ret;
SOCKET sClient;
struct sockaddr_in saServer;
char Message[]="hellolkjhlkjhglkhiuoyioytytetywejhfglhjoiupoiulkjhkljhlkjh;lkhopiyuio";
//char Message = '1';
wVersionRequested = MAKEWORD(2,2);
ret = WSAStartup(wVersionRequested,&wsaData);
if(ret != 0)
{
printf("WSAStartup() failed!\n");
}
else
printf("WSAStarup() success!\n");
if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2)
{
WSACleanup();
printf("Invalid WinSock version!\n");
}
else
printf("WinSock 2.2 available!\n");
//确认WinSock 版本
sClient = socket(AF_INET,SOCK_STREAM, IPPROTO_TCP); //创建socket 用TCP
if(sClient == INVALID_SOCKET)
{
WSACleanup();
printf("socket() failed!\n");
}
else
printf("socket() success!\n");
saServer.sin_family = AF_INET;
saServer.sin_port = htons(8001);
saServer.sin_addr.S_un.S_addr = inet_addr("192.168.1.48");
//Server 地址信息
ret = connect(sClient,(struct sockaddr *)&saServer,sizeof(saServer)); //请求连接
if (ret == SOCKET_ERROR)
{
printf("connect() failed!\n");
closesocket(sClient);
WSACleanup();
}
else
printf("connected!\n");
ret = send(sClient,(char *)&Message,sizeof(Message),0); //发送数据
if (ret == SOCKET_ERROR)
printf("send() failed!\n");
else
printf("Message has been sent!\n");
printf("%s",Message);
char recvbuf[100];
recv(sClient,recvbuf,100,0);
printf("%s",recvbuf);
closesocket(sClient); //关socket
WSACleanup();
getchar();
return 0;
}
//server
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net;
using System.Net.Sockets;
namespace SocketServer {
public partial class ServerForm:Form {
Socket Server = null;
Socket Client = null;
public ServerForm() {
InitializeComponent();
}
private void ServerForm_Load( object sender , EventArgs e ) {
Control.CheckForIllegalCrossThreadCalls = false;
Thread thread = new Thread( new ThreadStart( SocketListen ) );
thread.Start();
//SocketTimer.Start();
}
private void SocketListen() {
IPHostEntry IPList = Dns.GetHostByName( Dns.GetHostName() );
IPAddress IP = IPList.AddressList[0];
IPEndPoint ServerIP = new IPEndPoint( IP , 8001 );
Server = new Socket( AddressFamily.InterNetwork , SocketType.Stream , ProtocolType.Tcp );
Server.Bind( ServerIP );
Server.Listen( 10 );
while ( true ) {
Client = Server.Accept();
while ( !Client.Poll( 10 , SelectMode.SelectRead )) {
MessageBox.Show("connetcted");
try {
string str = MessageTextBox.Text.Trim() + "\r\n";
//str += "客户端:" + Client.RemoteEndPoint.ToString() + " 连入!\r\n";
//MessageTextBox.Text = str;
// 准备读取客户端请求的数据,读取的数据将保存在一个数组中
byte[] buffer = new byte[4096];
// 接受数据
int length = Client.Receive( buffer , 4096 , SocketFlags.None );
if (length > 0)
{
MessageBox.Show("Hello");
}
// 将请求的数据翻译为 UTF-8
System.Text.Encoding utf8 = System.Text.Encoding.UTF8;
string requestString = utf8.GetString( buffer , 0 , length );
requestString = requestString + "\r\n";
str = requestString + str;
MessageTextBox.Text = str;
MessageTextBox.ScrollToCaret();
//向客户端返回一个值
Client.Send( Encoding.ASCII.GetBytes("Yes") );
} catch ( Exception ) {
}
}
}
}
private void MessageTextBox_TextChanged(object sender, EventArgs e)
{
}
}
}