_mm_set_epi32 - 经过一些迭代后卡住了

时间:2016-07-03 13:34:20

标签: c sockets

我正在编写一个服务器 - 客户端代码,其中客户端将发送128位数字,服务器返回不同的128位数字。但是在我使用 _mm_set_epi32 来组合4个32位数以获得128位数的某个迭代之后它会卡住。

我无法理解问题所在。是网络问题还是其他问题,因为当我在本地机器上做同样的事情时,它工作正常。

以下是服务器的代码:

    #include "allh.h"
#define SERV_TCP_PORT_B1 5035
struct data{
  __m128i num;
} tosendb1,tosendb2,recvb1,recvb2;


int main(){
  int sockB1,sockB2;
  // declaring sockaddr_in
  struct sockaddr_in serv_addrb1,serv_addrb2;
  struct hostent *server;
  // configuring for b1
  sockB1=socket(AF_INET,SOCK_STREAM,0);
  serv_addrb1.sin_family=AF_INET;
  serv_addrb1.sin_addr.s_addr=inet_addr("10.0.0.2");
  serv_addrb1.sin_port=htons(SERV_TCP_PORT_B1);
  printf("\nReady for sending...\n");
  connect(sockB1,(struct sockaddr*)&serv_addrb1,sizeof(serv_addrb1));

  uint64_t diffb1,diffb2;
  srand(time(NULL)); // randomizing seed with time
  // send the number after storing this in the buffer
  char buffer[4096];
  int count =0;
  for (count =0;count<1000000;count++){
    printf("%d\n",count );
    unsigned int b1=0,b2=0,b3=0,b4=0; // declaring 4 32 bit number to make one 128 bit number
    b1 = rand();b2=rand();b3 = rand();b4 = rand();// generate 4 random number
    printf("b1 %d\n",b1 );
    tosendb1.num = _mm_set_epi32(b1,b2,b3,b4);

    write(sockB1,&tosendb1,4096);
    printf("write\n");
    read(sockB1,&recvb1,4096);
    printf("recv\n" );
    //clock_gettime(CLOCK_MONOTONIC, &endb1);   /* mark the end time */

  }

  return 0;
}

这是我的客户代码:

#include <stdio.h>  
#include <stdint.h> 
#include <stdlib.h> 
#include<string.h>
#include <time.h>   /* for clock_gettime */
#include<sys/types.h>
#include<sys/socket.h>
#include<arpa/inet.h> //inet_addr
#include<netinet/in.h>
#include<netdb.h>
#include <sys/syscall.h>
#include <unistd.h> 
#include <fcntl.h>
#include <wmmintrin.h>
#include <emmintrin.h>
#include <smmintrin.h>

这是allh.h:

{{1}}

0 个答案:

没有答案